在Cloud Dataflow服务上运行模板

时间:2018-11-08 10:27:15

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

我正在尝试运行在Google DataFlow中开发的本地模板。

问题是当我在Google Cloud Shell中使用以下命令运行它时:

python -m dataflow.py --project poc-cloud-209212 --temp_location gs://<...>

我收到此错误

/usr/bin/python: No module named apache_beam 

所以我尝试了一个简单的例子:wordcount

就像Google所说的,我执行:

python -m wordcount --input gs://dataflow-samples/shakespeare/kinglear.txt --output gs://<...> --runner DataflowRunner --project <project> --temp_location gs://<...>

我得到了这个错误:

/usr/bin/python: No module named past.builtins

如果我不使用.py执行:

 python -m wordcount --input gs://dataflow-samples/shakespeare/kinglear.txt --output gs://<...> --runner DataflowRunner --project <project> --temp_location gs://<...>

同样,同样的错误,但带有“更多”信息

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/<...>/wordcount.py", line 26, in <module>
    from past.builtins import unicode
ImportError: No module named past.builtins

发生了什么事?如何在Google Cloud Dataflow中运行这些模板?

我是否需要像在本地一样在Google Cloud中设置环境或默认情况下完成设置?

1 个答案:

答案 0 :(得分:1)

最后我做到了。

方法如下:

在Google Cloud中使用python 2.7安装virtualenv(默认情况下已安装3.5,Dataflow无法使用python3)

 virtualenv env --python=python2

激活此virtualenv后,您可以在其中运行