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

时间:2019-01-24 04:15:56

标签: python google-cloud-platform google-cloud-dataflow apache-beam dataflow

我对GCP和数据流非常陌生。但是,我想开始测试和部署一些利用GCP上的数据流的流。根据文档,有关数据流的所有内容都必须使用Apache项目BEAM。因此,根据官方文档here,受支持的python版本是2.7

老实说,由于Python 2.x版将由于没有官方支持而消失,并且每个人都在使用3.x版,这一事实令人非常失望。尽管如此,我想知道是否有人知道如何准备在python版本中运行的beam和GCP数据流。

我看到了这个video,并且看到了这个牧师如何完成这个美好的里程碑,并且显然可以在Python 3.5上运行。

更新

伙计们,我只想提出一个想法,因为我一直在努力处理数据流。我对使用Java或Python版本的工具开始具有挑战性感到非常失望。从python开始,存在关于版本3的限制,该版本几乎是当前的标准。另一方面,java在版本11上运行时会遇到问题,我必须稍作调整才能在代码的版本8上运行,然后我开始在代码上遇到许多不兼容的问题。简而言之,如果GCP真正想前进并成为第一名,那么还有很多地方需要改进。 :失望:

解决方法

我将Java版本降级为jdk 8,安装了maven,现在eclipse版本适用于Apache Beam。

我终于解决了,但是,GCP确实请考虑增强并扩展对Java / Python最新版本的支持。

非常感谢

3 个答案:

答案 0 :(得分:6)

您现在可以在Python 3.5上运行Apache Beam(我在Direct和DataFlow运行器上都尝试过)。apache-beam==2.11.0

在运行时带有警告:

  

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

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

希望随着时间的流逝会有所改善。

答案 1 :(得分:5)

当前,有 NO 方式可将Python3用于apache-beam(您可以为其编写适配器,但毫无疑问)。

对Python3.X的支持正在进行中,请查看此apache-beam issue

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

答案 2 :(得分:0)

Python 3支持方面发生了很多新变化。 DataFlow now supports就是betadata flow mentioning 3.7