从 pyspark 中删除 bigquery 表

Posted

技术标签:

【中文标题】从 pyspark 中删除 bigquery 表【英文标题】:Delete bigquery table from pyspark 【发布时间】:2019-06-29 09:15:21 【问题描述】:

我正在编写脚本以从 mongodb 读取数据,在 spark 中解析数据并将其写入 Bigquery。我有一个用例,基于集合我需要更新/重新创建 bigquery 表。但我找不到删除 bigquery 表的确切 api

我正在使用 https://github.com/samelamin/spark-bigquery 库将数据写入/附加到 bigquery,但找不到足够的文档来重新创建表。还查看了 Google 的 big-data-interop 库 https://github.com/GoogleCloudPlatform/bigdata-interop,但找不到确切的 api。

【问题讨论】:

【参考方案1】:

检查代码后,您应该尝试使用传递给BigQueryDataFrame.scala#L35 文件的WriteDisposition 参数。根据其他库(Python、Apache Beam),如果您使用WriteTruncate option,则操作应覆盖表的内容:“如果表已存在,BigQuery 将覆盖表数据。”

所以这样的代码应该可以工作(取自 Github 的 https://github.com/samelamin/spark-bigquery#saving-dataframe-using-pyspark):

# Load into a table or table partition
bqDF = bigquery.BigQueryDataFrame(df._jdf)
bqDF.saveAsBigQueryTable(
    "0:1.2".format(BQ_PROJECT_ID, DATASET_ID, TABLE_NAME),
    False, # Day paritioned when created
    0,     # Partition expired when created
    bigquery.__getattr__("package$WriteDisposition$").__getattr__("MODULE$").WRITE_TRUNCATE(),
    bigquery.__getattr__("package$CreateDisposition$").__getattr__("MODULE$").CREATE_IF_NEEDED(),
)

让我们知道它是否有帮助。

【讨论】:

以上是关于从 pyspark 中删除 bigquery 表的主要内容,如果未能解决你的问题,请参考以下文章

使用 scala 从 spark 中删除 bigquery 表

将数据从 BigQuery 表加载到 Dataproc 集群时出错

如何将 PySpark 连接到 Bigquery

从Google BigQuery中的嵌套表中删除重复项

BigQuery:从视图中查询时出错

从 BigQuery 中删除重复记录