如何使用spark bq连接器查询INFORMATION_SCHEMA视图



我正在尝试使用以下查询来识别从BQ表更新的分区:

select * from PROJECT-ID.DATASET.INFORMATION_SCHEMA.PARTITIONS where 
table_name='TABLE-NAME' and 
extract(date from last_modified_time)='TODAY-DATE'

这在BQ控制台上运行良好。然而,当我使用来自spark-bq连接器的相同查询时,它失败了。

spark.read.format("bigquery").load("PROJECT-ID.DATASET.INFORMATION_SCHEMA.PARTITIONS")

错误:

"Invalid project ID PROJECT-ID. Project IDs must contain 6-63 lowercase letters, digits, or dashes. Some project IDs also include domain name separated by a colon. IDs must start with a letter and may not end with a dash."

我尝试了多种组合,比如在PROJECT-ID之后添加`,但API仍然抛出400错误。

从火花bq连接器查询INFORMATION_SCHEMA的正确方法是什么?

将项目设置为parentProject解决问题。

spark.read
.format("bigquery")
.option('parentProject', project_id)

INFORMATION_SCHEMA不是BigQuery中的标准数据集,因此无法通过spark-BigQuery连接器使用的BigQuery Storage API使用。但是,您可以通过以下方式查询它并将数据加载到数据帧中:

spark.conf.set("viewsEnabled","true")
spark.conf.set("materializationDataset","<dataset>")
val tablesDF = spark.read.format("bigquery").load("select * from `<projectId>.<dataset>.__TABLES__`")

table="INFORMATION_SCHEMA。TABLES";

sql=f〃"quot;选择*FROM{project_id}。{数据集}。{表}"quot">

返回(火花阅读格式('bigquery'(。加载(sql()

相关内容

  • 没有找到相关文章

最新更新