尝试从BigQuery读取外部表,但却遇到错误
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()
结果:
root
|-- createdAtmetadata: date (nullable = true)
|-- eventName: string (nullable = true)
|-- producerName: string (nullable = true)
所以当我打印
df.createOrReplaceTempView("member")
spark.sql("select * from member limit 100").show()
我收到一条信息错误:
INVALID_ARGUMENT:请求失败:只有具有连接的外部表才能使用Storage读取。
发布于 2022-04-19 04:38:06
由于spark在查询中不支持外部表,所以我尝试了另一种方法并获得了!
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()
发布于 2022-04-18 20:57:45
BigQuery连接器使用bigquery存储API读取数据。目前,这个API不支持外部表,这个连接器也不支持它们。
https://stackoverflow.com/questions/71915358
复制