分析云数据流 BigQuery 吞吐量/管道

2024-04-13

我试图弄清楚 DataFlow 如何扩展某些操作以及如何使其表现最佳。首先,我刚刚创建了一个简单的流程,从 BigQuery 读取数据(约 25M 行,总共 30GB),执行 JSON 提取,按键进行简单的分组,然后对分组进行聚合(每个约 100 个元素),然后执行另一个操作对每个键进行转换并将其放回到新表中(约 500k 行,总共 25GB)。

总的管道执行时间在 10-18 分钟之间,具体取决于我分配的工作人员数量或我是否使用多核机器等。我无法将其速度加快到低于此速度。我还没有确定确切的阈值,但基本上 20 个单核或 10 个四核之间的差异不再可靠地测量。

所以我的问题是如何进一步调查这个问题并找出哪个步骤花费最多时间以及如何改进它。我认为 DataFlow 本身负责扩展各个步骤并在它们之间进行平衡。但对我来说,现在看到收到的第一条消息和发送的最后一条消息可能很有趣,也许还有每一步随时间变化的吞吐量。这是在某处可用的东西,还是我必须自己开始检测和记录它?有了这些信息,我将开始基于此优化各个步骤,并可能覆盖数据流缩放。

这是正确的方法,还是有更好的方法可用?

** 我的目标时间是将其减少到 2 分钟。


Dataflow 首先执行 BigQuery 导出作业,将数据复制到 GCS,然后再读入并处理数据。同样,Dataflow 将数据写入 GCS,然后执行 BigQuery 导入作业来加载表。

如果您查看作业消息和/或日志,您应该能够看到导出作业何时完成(并且您的代码开始从导出的文件中读取)以及导入作业何时开始(并且您的代码已完成写入所有输出)数据)。如果 10-18 分钟的大部分时间都花在 BigQuery 导入/导出作业上,那么调整管道不会对性能产生重大影响。

其他常见问题是有一两个特别热门的密钥(例如,包含大部分数据)。从您的描述来看,情况似乎并非如此(您提到每个键都有大约 100 个元素)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分析云数据流 BigQuery 吞吐量/管道 的相关文章

随机推荐