数据流会随着运行步骤而挂起-没有创建/输出任何元素。与Direct Runner

时间:2019-04-11 06:58:25

标签: python-3.x apache-beam dataflow

我正在编写Beam管道,以在CSV集合上运行一些任意的Pandas代码。这需要使用比Dataflow随附的版本更高的Pandas('0.24.2')版本运行,出于方便,我在Python 3.6而不是3.5上运行它。

这在使用Direct Runner运行时有效,但在DataFlow上运行时无效。

这是管道的示例:

https://gist.github.com/mayansalama/b5756493f478a99224cd5c51ca4304e9

我可以直接运行直接运行此

python pipeline.py --infile-pattern gs://[test_bucket]/csv_tests/ --output-table [PROJECT]:[DATASET].[TABLE_NAME]

当我尝试在Dataflow上运行此作业时,该作业挂起,按比例放大,但实际上未执行任何操作。最初我得到了错误:

AttributeError: Can't get attribute 'PandifyCSV' on <module 'dataflow_worker.start' from '/usr/local/lib/python3.5/site-packages/dataflow_worker/start.py'>

但是,使用save_main_session不再是问题:

python pipeline.py --infile-pattern  gs://[test_bucket]/csv_tests/ \
                    --output-table [PROJECT]:[DATASET].[TABLE_NAME]  \
                    --requirements_file requirements.txt \
                    --runner DataflowRunner \
                    --project im-dev-219022  \
                    --temp_location gs://test_bucket_im_dev/tmp/ \
                    --experiment ignore_py3_minor_version \
                    --save_main_session 

今晚晚些时候,我将尝试在py3.5上运行,而无需使用ignore_py3_minor_version选项。

与此同时有什么想法吗?

编辑:我开始工作了,这个问题是通过--requirements_file传递大熊猫的。进行pip download pandas==0.24.2并使用--extra_package参数传递该问题即可解决此问题。

0 个答案:

没有答案