ApacheBeam2.1.0有一个从BigQuery读取模板管道的错误,这意味着它们只能执行一次。这里有更多的细节,https://issues.apache.org/jira/browse/BEAM-2058
这已经随着Beam2.2.0的发布而得到修正,您现在可以使用withTemplateCompatibility选项从BigQuery中读取,您的模板管道现在可以多次运行。
pipeline
.apply("Read rows from table."
, BigQueryIO.readTableRows()
.withTemplateCompatibility()
.from("<your-table>")
.withoutValidation())这个实现似乎给BigQueryIO读取操作带来了巨大的性能代价,我现在有了批处理管道,运行在8-11分钟的中,现在一直要用45-50分钟来完成。这两条管道之间唯一的区别是.withTemplateCompatibility().
我试着去理解为什么业绩大幅下降的原因,以及是否有任何方法来改善它们。
谢谢。
解决方案:基于jkff的输入的。
pipeline
.apply("Read rows from table."
, BigQueryIO.readTableRows()
.withTemplateCompatibility()
.from("<your-table>")
.withoutValidation())
.apply("Reshuffle", Reshuffle.viaRandomKey())发布于 2017-12-11 17:09:22
我怀疑这是因为withTemplateCompatibility是以禁用动态平衡作为这个读取步骤的代价。
我认为,只有当您读取少量或中等数量的数据,但对其执行非常重的处理时,它才会产生重大影响。在本例中,尝试将Reshuffle.viaRandomKey()添加到BigQueryIO.read()中。它将实现数据的临时副本,但将更好地并行下游处理。
https://stackoverflow.com/questions/47755692
复制相似问题