首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BigQueryIO读取withTemplateCompatibility的性能

使用BigQueryIO读取withTemplateCompatibility的性能
EN

Stack Overflow用户
提问于 2017-12-11 15:01:48
回答 1查看 1.5K关注 0票数 4

ApacheBeam2.1.0有一个从BigQuery读取模板管道的错误,这意味着它们只能执行一次。这里有更多的细节,https://issues.apache.org/jira/browse/BEAM-2058

这已经随着Beam2.2.0的发布而得到修正,您现在可以使用withTemplateCompatibility选项从BigQuery中读取,您的模板管道现在可以多次运行。

代码语言:javascript
复制
  pipeline
    .apply("Read rows from table."
         , BigQueryIO.readTableRows()
                     .withTemplateCompatibility()
                     .from("<your-table>")
                     .withoutValidation())

这个实现似乎给BigQueryIO读取操作带来了巨大的性能代价,我现在有了批处理管道,运行在8-11分钟的中,现在一直要用45-50分钟来完成。这两条管道之间唯一的区别是.withTemplateCompatibility().

我试着去理解为什么业绩大幅下降的原因,以及是否有任何方法来改善它们。

谢谢。

解决方案:基于jkff的输入的

代码语言:javascript
复制
  pipeline
    .apply("Read rows from table."
         , BigQueryIO.readTableRows()
                     .withTemplateCompatibility()
                     .from("<your-table>")
                     .withoutValidation())
    .apply("Reshuffle",  Reshuffle.viaRandomKey())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-11 17:09:22

我怀疑这是因为withTemplateCompatibility是以禁用动态平衡作为这个读取步骤的代价。

我认为,只有当您读取少量或中等数量的数据,但对其执行非常重的处理时,它才会产生重大影响。在本例中,尝试将Reshuffle.viaRandomKey()添加到BigQueryIO.read()中。它将实现数据的临时副本,但将更好地并行下游处理。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47755692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档