0

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

4

1 回答 1

2

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

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

您可以尝试查看是否有帮助的一件事是使用更多资源触发管道,例如:--workerMachineType=n1-highmem-8, numWorkers=10, maxNumWorkers=10 并查看是否更好。

或者,有一个V2 解决方案使用基于字节的偏移,使用状态和计时器 API 来优化批处理和资源利用,您可以尝试一下。

于 2020-08-27T18:11:42.143 回答