【问题标题】:Used Dataflow's DLP to read from GCS and write to BigQuery - Only 50% data written to BigQuery使用 Dataflow 的 DLP 从 GCS 读取并写入 BigQuery - 只有 50% 的数据写入 BigQuery
【发布时间】:2020-12-11 07:16:48
【问题描述】:

我最近启动了一项 Dataflow 作业,从 GCS 加载数据并通过 DLP 的标识模板运行它,并将屏蔽数据写入 BigQuery。我找不到 Google 提供的批处理模板,因此使用了流式处理模板(参考:link)。 我看到只有 50% 的行被写入目标 BigQuery 表。管道处于运行状态,一天内没有任何活动。

【问题讨论】:

  • 能否分享一下Dataflow版本?谢谢!
  • 我使用了 Dataflow UI 并选择了 Google 提供的模板。以下是作业信息中的详细信息:goog-dataflow-provided-template-name:stream_dlp_gcs_text_to_bigquery; goog-dataflow-provided-template-version:2020-08-10-01_rc00; userAgent:Apache_Beam_SDK_for_Java/2.20.0(JDK_11_environment)

标签: google-cloud-platform google-bigquery google-cloud-storage google-cloud-dataflow google-cloud-dlp


【解决方案1】:

是的,DLP 数据流模板是一个流式管道,但通过一些简单的更改,您也可以将其用作批处理。这是模板source code。如您所见,它使用File IO transform 并在每 30 秒内轮询/监视任何新文件。如果去掉窗口变换和连续轮询语法,应该可以批量执行。

就管道未处理所有数据而言,您能否确认您是否正在使用默认设置运行大文件?例如,workerMachineType、numWorkers、maxNumWorkers?当前管道代码使用基于行的偏移,如果输入文件很大,则需要具有大量工作人员的 highmem 机器类型。例如,对于 10 GB、80M 行,您可能需要 5 个 highmem worker。

您可以尝试使用更多资源来触发管道,例如:--workerMachineType=n1-highmem-8, numWorkers=10, maxNumWorkers=10,看看它是否有帮助。

或者,有一个 V2 solution 使用基于字节的偏移,使用 state and timer API 来优化批处理和资源利用率,您可以尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2019-10-25
    相关资源
    最近更新 更多