【发布时间】:2020-12-03 07:14:47
【问题描述】:
我在使用 Dataflow 使用 Apache-beam 编写代码时遇到一个问题。
本来我是用python写代码的,后来在支持的语言中查了一下java、go、scio。
请就是否存在性能最佳的语言向我们提供反馈。
还是有更多的库支持?
这是我个人的好奇心,但是文档中的内容很难概括,所以我写了一个问题。谢谢。
【问题讨论】:
标签: google-cloud-platform dataflow
我在使用 Dataflow 使用 Apache-beam 编写代码时遇到一个问题。
本来我是用python写代码的,后来在支持的语言中查了一下java、go、scio。
请就是否存在性能最佳的语言向我们提供反馈。
还是有更多的库支持?
这是我个人的好奇心,但是文档中的内容很难概括,所以我写了一个问题。谢谢。
【问题讨论】:
标签: google-cloud-platform dataflow
这是一个非常自以为是的问题,但我会尝试根据我的知识和经验来回答。
Java 是第一个在 Beam 上发布的具有全套功能(流式处理、批处理、窗口化...)的语言。
Python 紧随其后,一开始的功能有限,后来又得到了丰富(没有流式传输,然后是没有窗口的流式传输......)。 Beam 和 Dataflow 不在 Python 中处理数据,它绝对没有效率。 Python 语言是 Java 代码中最有效处理的包装器。这就是为什么 Python 在功能方面总是落后于 Java。
Go SDK 是一个新的,我从来没有测试过,在 Alpha 的时间太长了,我从来没有花时间尝试过。
现在,在 Dataflow 上,事情已更改为 described here。 v2引擎只使用语言作为流水线的描述,使用C++进行处理。
因此,功能方面的差异可能会继续存在,但有一天会消失。性能将是相同的。
【讨论】:
虽然 Python 和 Go 正在迎头赶上,但 Java 具有更多功能和外部连接器。
它有更多的 I/O 转换,因此您有更多的选择将其与其他系统、数据库、消息源等集成... (Built-in I/O Transforms for Java, Python and Go)。
还要检查不同 SDK 的 Apache Beam roadmap。
此外,您现在可以对 Dataflow 使用更基于服务的架构 Runner v2,其中包括对其所有语言 SDK 的多语言支持。当您只想将一种语言用于某些特定功能而将其余部分用于另一种语言时,这非常有用。
【讨论】: