Fir*_*ser 0 google-cloud-dataflow apache-beam
我已经使用Beam一段时间了,我想知道编写高效且优化的Beam管道的关键概念是什么。
我有一些Spark背景知识,并且我知道我们可能更喜欢使用reduceByKey而不是groupByKey以避免混洗并优化网络流量。
Beam也一样吗?
我将不胜感激一些技巧或材料/最佳实践。
要考虑的一些事项:
申报人优先;尽可能在DAG中放置过滤器操作)
早点结合;如果可以选择何时合并,请尽早进行。
如果可能,请在大型滑动窗口之前使用较小的固定窗口,以减少大型滑动窗口的影响。FixedWindow.of(1m)| 结合| SlidingWindow.of(6小时)
大多数跑步者将支持图形融合,这在99%的时间内是正确的选择。但是在大规模扇出变换的情况下,您应该中断融合。
对于一般的钥匙
高级按键提示:
使用选项标志可以轻松读取压缩文件,但是如果没有Offset TextIO,则无法分发此任务。如果您有很大的文件要读取,请在启动管道之前读取解压缩文件,这可以大大提高性能。还要看看使用压缩的Avro等格式。
BackPressure:光束流道设计为能够快速咀嚼平行工作。他们可以在许多计算机上增加许多线程来实现此目标。这很容易淹没外部系统,尤其是在进行每个元素的RPC调用时。如果无法扩展外部系统,请使用startBundle / finishBundle创建批处理以帮助提高每秒的调用次数
光速仍然是光速。:-)避免使用离您的工人远的水槽和水源。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |