为什么需要临时 GCS 存储桶将数据帧写入 BigQuery:pyspark

问题描述

最近我在使用 pyspark 将数据帧数据写入 BigQuery 时遇到了一个问题。原来是这样:

pyspark.sql.utils.IllegalArgumentException:必须通知 u'Temporary 或 Persistent GCS 存储桶

在研究该问题后,我发现要提及的临时 GCS 存储桶 spark.conf

bucket = "temp_bucket"
spark.conf.set('temporaryGcsBucket',bucket)

我认为没有像 Hive 那样在 Biquery 中为表创建文件的概念。

我想了解更多,为什么我们需要有 temp-gcs-bucket 来将数据写入 bigquery?

我一直在寻找这背后的原因,但我找不到。

请说明。

解决方法

spark-bigquery-connector 与 Apache Spark 一起用于从 BigQuery 读取数据和向 BigQuery 写入数据。连接器通过首先将所有数据缓冲到 Cloud Storage 临时表中来将数据写入 BigQuery,然后在一次操作中将所有数据复制到 BigQuery。一旦 BigQuery 加载操作成功,连接器将尝试删除临时文件,并在 Spark 应用程序终止时再次尝试删除。如果作业失败,您可能需要手动移除所有剩余的临时 Cloud Storage 文件。通常,您会在 gs://[bucket]/.spark-bigquery-[jobid]-[UUID] 中找到临时的 BigQuery 导出。

有关将数据写入 bigquery 的更多参考,您可以关注 here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...