【问题标题】:Read data from BigQuery and write it into avro file format on cloud storage从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式
【发布时间】:2019-09-11 12:27:50
【问题描述】:

我的目标是从 BigQuery 表中读取数据并使用 Java 将其写入云存储上的 Avro 文件。如果有人提供代码片段/想法来编写 BigQuery 表数据并使用 Cloud Dataflow 将其写入 avro 格式的数据,那就太好了。

【问题讨论】:

    标签: java google-bigquery google-cloud-storage google-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?
    猜你喜欢
    • 2019-06-28
    • 2018-08-04
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多