支持 Google 数据流的最佳 Apache Beam 语言是什么?

What is the best Apache Beam language that supports Google Dataflow?

我在使用 Dataflow 使用 Apache-beam 编写代码时遇到问题。

本来我是用python写代码的,后来在支持的语言中查了java、go、scio

请向我们反馈是否有性能最好的语言。

或者是否有更多的库支持?

个人好奇,文档中的内容很难概括,所以写了个问题。谢谢。

这是一个非常自以为是的问题,但我会尝试根据我的知识和经验来回答。

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

此外,您现在可以使用名为 Runner v2 的更基于服务的架构到 Dataflow,其中包括对其所有语言 SDK 的多语言支持。当您只想为某些特定功能使用一种语言而其他语言使用另一种语言时,这非常有用。