Поток данных зависает с шагами в процессе - элементы не созданы / вывод. Работает с Direct Runner - PullRequest
1 голос
/ 11 апреля 2019

Я пишу конвейер Beam для запуска произвольного кода Pandas в коллекции CSV. Это должно выполняться с использованием более поздней версии Pandas ('0.24.2'), чем версия, которая поставляется в Dataflow, и для удобства я использую это на 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]

Когда я пытаюсь запустить это в потоке данных, это задание зависает, масштабируется, но фактически ничего не делает. Изначально я получил ошибку:

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 решило эту проблему.

...