从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式
Posted
技术标签:
【中文标题】从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式【英文标题】:Read data from BigQuery and write it into avro file format on cloud storage 【发布时间】:2019-09-11 12:27:50 【问题描述】:我的目标是从 BigQuery 表中读取数据并使用 Java 将其写入云存储上的 Avro 文件。如果有人提供代码片段/想法来编写 BigQuery 表数据并使用 Cloud Dataflow 将其写入 avro 格式的数据,那就太好了。
【问题讨论】:
【参考方案1】:可以将数据从 BigQuery 以 Avro 格式导出到 GCS 作为一次性导出,这可以通过客户端库(包括 Java)来完成。 Here 是一些 sn-ps(完整示例可以在 GitHub 中找到),对于 java,您可以编写代码:
Job job = table.extract(format, gcsUrl);
// Wait for the job to complete
try
Job completedJob =
job.waitFor(
RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
RetryOption.totalTimeout(Duration.ofMinutes(3)));
if (completedJob != null && completedJob.getStatus().getError() == null)
// Job completed successfully
else
// Handle error case
catch (InterruptedException e)
// Handle interrupted wait
format variable 可以是 CSV、JSON 或 AVRO,gcsUtl 变量应包含存储桶和文件路径,例如gs://my_bucket/文件名
【讨论】:
我正在寻找使用 GCP 数据流建立 ETL 流程,所以我不能从 BQ 控制台 UI 进行手动流程。 我认为 Flavien 提供的链接也有关于如何以编程方式(例如从 Java 中)进行操作的说明,因此您不必从 BQ 控制台 UI 进行操作。另外,我认为 Cloud Dataflow 支持直接从 BigQuery 表而不是 GCS 位置读取,所以也许您根本不需要写入 GCS?以上是关于从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式的主要内容,如果未能解决你的问题,请参考以下文章