apache-spark - 如何将 DeltaLake 文件从 GCS 包含到 BigQuery
问题描述
是否有可用于将存储在 Google Cloud Storage (GCS) 中的Delta Lake文件直接导入 BigQuery 的库/连接器?
我已经设法使用 Spark Dataframe 作为中介来编写 BigQuery 表,但我找不到任何直接连接器或 BigQuery Library 可以在不通过 spark dataframes 转换的情况下执行此操作。
更新 1:我尝试使用官方连接器spark-bigquery-connector但缺少有关如何指向 BigQuery 中特定项目的文档,因此我只能从 GCS 将 DeltaLake 文件加载到 Dataframe 中。
更新 2:使用 Javier 的评论,我设法写信给 BQ,但这个解决方案没有优化,而且我可以优化 spark Job,它不会像使用谷歌 Bigquery 库那样直接,它在引擎盖下完成
更新 3 和临时解决方案:没有找到任何直接解决方案,我最终使用 spark-bigquery-connector 来摄取 Delta 文件,如下所示:
myDeltaTable.toDF
.write
.format("bigquery")
.mode("overwrite")
.option("parentProject", "MY_PARENT_PROJECT")
.option("project", "MY_PROJECT")
.option("temporaryGcsBucket", "A_STAGING_BUCKET_IN_GCS") // Mandatory
.option("partitionField", "MY_PARTITION_FIELD")
.save("DATASET.TABLE")
解决方案
如果不通过一些中介,就无法将 GCS 中的 Datalake 文件提取到 BigQuery。
您可以设置一个 GCE 虚拟机,从 GCS 下载 Datalake 文件,使用Datalake 独立连接器读取它,然后写入 BigQuery(通过流 API 或写入支持的格式,如 Parquet 和导入)。
然而,这本质上是手动执行 Spark 将执行的相同操作。