我最近开始了一项数据流作业,从GCS加载数据,并通过DLP的标识模板运行数据,并将屏蔽数据写入BigQuery。我找不到谷歌提供的批量处理模板,因此使用了流式模板(参考:链接(。我看到只有50%的行被写入目标BigQuery表。即使处于运行状态,管道上也有一天没有活动。
yes DLP数据流模板是一个流媒体管道,但通过一些简单的更改,您也可以将其作为批处理使用。这是模板的源代码。正如您所看到的,它使用文件IO转换,并在每30秒内轮询/监视任何新文件。如果去掉窗口转换和连续轮询语法,您应该能够作为批处理执行。
就管道不处理所有数据而言,你能确认你是否正在使用默认设置运行一个大文件吗?例如-workerMachine类型,numWorkers,maxNumWorkers?当前的管道代码使用基于行的偏移,如果输入文件很大,则需要具有大量工作人员的高内存机器类型。例如,对于10GB、80M的线路,您可能需要5个高内存工作者。
有一件事你可以试着看看它是否有帮助,那就是用更多的资源触发管道,例如:--workerMachineType=n1-highmem-8,numWorkers=10,maxNumWorkers=10,看看它是否更好。
或者,还有一个V2解决方案,它使用基于字节的偏移,使用状态和计时器API来优化批处理和资源利用率,您可以尝试。