如何改善数据流管道中的低吞吐量groupbykey

问题描述

我有一个Apache Beam批处理管道(用Java编写),用于将原始分析数据从bigquery转换为聚合形式。从bigquery读取会话记录(现在可能会在未来几天的页面事件中扩展)和一组新的页面事件。然后,管道将执行groupByKey操作,以在聚合操作创建会话记录之前按用户ID分组(跨两个数据集)。 groupByKey操作在较大的数据集(约8400000条记录)上的执行速度非常慢(每秒约50个吞吐量),而其他输入(约1000000条记录)的吞吐量要高得多(每秒10000个记录) )。有人对我如何进行故障排除并最终提高手术速度有任何建议吗?

通过在线研究,我知道有时使用Combine运算比groupByKey(除其他article之外)效率更高,但我认为这样做不合适我要分组的数据(BQ TableRow记录)。

可能有用的其他信息

  • groupByKey正在将8400000条记录分为大约3500000条分组记录,每个键的合并范围约为2000条至1条记录
  • 我完全承认,我对apache光束和数据流的复杂性缺乏全面的了解,并且由于我将建立许多不同的管道,因此渴望了解更多。
  • 下面是数据流图的屏幕截图

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)