首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >火花读取BigQuery外部表

火花读取BigQuery外部表
EN

Stack Overflow用户
提问于 2022-04-18 18:00:56
回答 2查看 1.1K关注 0票数 3

尝试从BigQuery读取外部表,但却遇到错误

代码语言:javascript
代码运行次数:0
运行
复制
    SCALA_VERSION="2.12"
    SPARK_VERSION="3.1.2"
    com.google.cloud.bigdataoss:gcs-connector:hadoop3-2.2.0,
    com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.24.2'

    table = 'data-lake.dataset.member'
    df = spark.read.format('bigquery').load(table)
    df.printSchema()

结果:

代码语言:javascript
代码运行次数:0
运行
复制
root
  |-- createdAtmetadata: date (nullable = true)
  |-- eventName: string (nullable = true)
  |-- producerName: string (nullable = true)

所以当我打印

代码语言:javascript
代码运行次数:0
运行
复制
df.createOrReplaceTempView("member")
spark.sql("select * from member limit 100").show()

我收到一条信息错误:

INVALID_ARGUMENT:请求失败:只有具有连接的外部表才能使用Storage读取。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-19 12:38:06

由于spark在查询中不支持外部表,所以我尝试了另一种方法并获得了!

代码语言:javascript
代码运行次数:0
运行
复制
def read_query_bigquery(project, query):
df = spark.read.format('bigquery') \
  .option("parentProject", "{project}".format(project=project))\
  .option('query', query)\
  .option('viewsEnabled', 'true')\
  .load()

return df

project = 'data-lake'
query = 'select * from data-lake.dataset.member'
spark.conf.set("materializationDataset",'dataset')
df = read_query_bigquery(project, query)
df.show()
票数 3
EN

Stack Overflow用户

发布于 2022-04-19 04:57:45

BigQuery连接器使用bigquery存储API读取数据。目前,这个API不支持外部表,这个连接器也不支持它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71915358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档