首页 > 解决方案 > 如何在 Python 3.x 上为数据流 GCP 获取 Apache Beam

问题描述

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

老实说,由于没有官方支持,Python 2.x 版将消失,而且每个人都在使用 3.x 版,这令人相当失望。不过,我想知道是否有人知道如何准备好在 python 版本中运行的光束和 GCP 数据流。

我看到了这个视频,以及这位牧师如何完成这个美妙的里程碑,并且显然它运行在 Python 3.5 上。

更新

伙计们,我只想提出一个想法,自从我在数据流中苦苦挣扎时,我就想到了这个想法。我真的感到非常失望,因为无论是 Java 版本还是 Python 版本,开始使用这个工具是多么具有挑战性。从 python 来看,版本 3 有一些限制,这几乎是当前的标准。另一方面,java 在版本 11 上运行时出现问题,我必须稍作调整才能在版本 8 上运行我的代码,然后我开始为代码上的许多不兼容问题而苦苦挣扎。简而言之,如果 GCP 真的想要前进并成为第一,那么还有很多需要改进的地方。:失望的:

解决方法

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

我终于解决了,但是,GCP 真的请考虑增强和跨越对最新版本的 Java/Python 的支持。

非常感谢

标签: pythongoogle-cloud-platformgoogle-cloud-dataflowapache-beamdataflow

解决方案


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

运行时带有警告:

用户警告:尚未完全支持在 Python 3 上运行 Apache Beam SDK。您可能会遇到错误行为或缺少功能。

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

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


推荐阅读