问题描述
我有一个Apache Beam批处理管道(用Java编写),用于将原始分析数据从bigquery转换为聚合形式。从bigquery读取会话记录(现在可能会在未来几天的页面事件中扩展)和一组新的页面事件。然后,管道将执行groupByKey
操作,以在聚合操作创建会话记录之前按用户ID分组(跨两个数据集)。 groupByKey
操作在较大的数据集(约8400000条记录)上的执行速度非常慢(每秒约50个吞吐量),而其他输入(约1000000条记录)的吞吐量要高得多(每秒10000个记录) )。有人对我如何进行故障排除并最终提高手术速度有任何建议吗?
通过在线研究,我知道有时使用Combine
运算比groupByKey
(除其他article之外)效率更高,但我认为这样做不合适我要分组的数据(BQ TableRow记录)。
可能有用的其他信息
-
groupByKey
正在将8400000条记录分为大约3500000条分组记录,每个键的合并范围约为2000条至1条记录 - 我完全承认,我对apache光束和数据流的复杂性缺乏全面的了解,并且由于我将建立许多不同的管道,因此渴望了解更多。
- 下面是数据流图的屏幕截图
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)