如何在Python 3.x上获取用于GCP数据流的Apache Beam

7
我对GCP和dataflow非常陌生。然而,我想开始测试和部署一些利用GCP上的dataflow的流程。根据文档和所有与dataflow相关的内容,必须使用Apache项目BEAM。因此,按照官方文档这里,支持的Python版本是2.7。
老实说,这令人非常失望,因为Python 2.x版本将消失,因为没有官方支持,而每个人都在使用版本3.x。尽管如此,我想知道是否有人知道如何在Python版本中准备好beam和GCP dataflow运行。
我看到了这个视频,某种程度上,这个人完成了这个奇妙的里程碑,并且显然在Python 3.5上运行。
更新:
各位,我只是想提出一个想法,因为我正在努力处理dataflow。我真的感到非常失望,因为无论是Java还是Python版本,都很难开始使用这个工具。从Python来看,版本3有限制,这基本上是当前标准。另一方面,Java在11版本上运行存在问题,我必须稍微调整我的代码才能在版本8上运行,然后我开始在代码中遇到许多不兼容性。简而言之,如果GCP真的想向前发展并成为#1,还有很多需要改进的地方。
解决方法:
我将我的Java版本降级到jdk 8,安装了maven,现在我的eclipse版本可以使用Apache Beam。
我终于解决了,但是GCP请考虑增强和扩展对Java / Python最新版本的支持。
非常感谢。
3个回答

13

现在你可以在Python 3.5上运行Apache Beam(我尝试了Direct和DataFlow runner)。apache-beam==2.11.0

但是运行时会出现警告:

UserWarning: 在Python 3上运行Apache Beam SDK尚不完全受支持。您可能会遇到错误行为或缺失功能。

我已经注意到,beam.io.gcp.pubsub.ReadFromPubSub()损坏了。虽然将消息推送到PubSub,但管道从未读取消息(在Direct Runner上尝试)。

希望随着时间的推移事情会有所改善。


1
看起来它正在积极地进行开发(终于!),现在有相当多的活跃变更。 - kotrfa
感谢@kotrfa提供的链接,很有用,值得关注。 - Vibhor Jain
1
欢迎。我在Python 3.7上尝试了一个基本的DirectRunner示例,它运行良好。 - kotrfa
太好了!这意味着更新的客户端库现在支持Py 3.5+。 - Vibhor Jain

6

请查看@VibhorJain的回答,它现在可以使用。


目前没有办法在apache-beam中使用Python3(你可以为其编写适配器,但毫无意义)。

Python3.X的支持正在进行中,请查看apache-beam问题

P.S. 在视频中,Python 3.5.2仅用于编辑器版本,而不是运行apache-beam的Python。请注意,在bash中,运行的是Python 2.7。


1
我对数据流的唯一评价就是巨大的悲伤和失望。我真的想部署几个流水线,但在动手之前必须面对许多兼容性限制,这太令人沮丧了 :( - Andres Urrego Angel
@AndresUrregoAngel,你可以考虑使用Cloud Dataproc,尽管我没有试过。Dataproc可以建立Spark工作,而Spark可以在Python3.4+中运行,为你提供更多自由(以及一些更繁琐的工作,如平衡)。 - MT-FreeHK

1

Python 3的支持正有很多新变化。DataFlow现在已经以beta版本支持它了!data flow mentioning 3.7点击此处了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接