Как передать параметр needs.txt в поток данных, когда поток данных запускается облачной функцией? - PullRequest
2 голосов
/ 06 апреля 2020

Objective- У меня есть шаблон потока данных (записан в python) , который зависит от pandas и nltk. Также я хочу запустить задание потока данных из облачной функции , Для этого я загрузил код в корзину и готов указать местоположение шаблона в облачной функции.

Проблема- Как передать параметр needs_file, который обычно передается, для установки любой сторонней библиотеки при запуске задания потока данных с помощью модуля обнаружения Google из облака?

Предварительные условия- Я знаю, что это можно сделать, когда вы запускаете задание через локальную машину, указав путь к локальному каталогу, но когда я пытаюсь указать путь из GCS, такой как --requirements_file gs://bucket/requirements.txt, он дает мне сообщают об ошибке:

Файл gs: //bucket/requirements.txt не найден. Это было указано в параметре командной строки --requirements_file.

1 Ответ

2 голосов
/ 15 апреля 2020

Шаблон потока данных - это не код python или java, а скомпилированная версия кода, который вы написали в python или java. Поэтому, когда вы создаете шаблон, вы можете передать requirements.txt в аргументах, как обычно, как показано ниже

python dataflow-using-cf.py \
    --runner DataflowRunner \
    --project <PROJECT_ID> \
    --staging_location gs://<BUCKET_NAME>/staging \
    --temp_location gs://<BUCKET_NAME>/temp \
    --template_location ./template1 \
    --requirements_file ./requirements.txt \

Приведенная выше команда создаст файл с именем template1, который, если вы read, содержит структуру JSON, этот файл является скомпилированной версией кода потока данных, который вы написали, и в процессе компиляции он прочитает ваш requirements.txt из вашего локального каталога и скомпилирует его шаги. Затем вы можете добавить свой шаблон в корзину и указать путь к облачной функции, вам не нужно беспокоиться о файле requirements.txt после создания шаблона.

...