# #python #google-cloud-platform #dataflow
Вопрос:
Попытка использовать шаблон flex потока данных с пользовательским изображением контейнера python.
FROM gcr.io/dataflow-templates-base/python3-template-launcher-base
ARG WORKDIR=/dataflow/template
RUN mkdir -p ${WORKDIR}
WORKDIR ${WORKDIR}
COPY . .
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/pipeline_preprocess_preprocess_table.py"
RUN pip install -U -r ./requirements.txt
Используя следующие команды для создания/запуска контейнера:
gcloud builds submit --gcs-log-dir $GCSLOGDIR --tag $TEMPLATE_IMAGE .
gcloud dataflow flex-template build $TEMPLATE_PATH --image "$TEMPLATE_IMAGE" --sdk-language "PYTHON" --metadata-file $METADATA_FILE --network $NETWORK --subnetwork $SUBNETWORK --project $PROJECT --worker-region $REGION --service-account-email $SERVICE_ACCOUNT_EMAIL
gcloud dataflow flex-template run "<pipeline-name>-`date %Y%m%d-%H%M%S` " --template-file-gcs-location $TEMPLATE_PATH --parameters <parameter_name>=<parameter_value>...repeat_for_ea --region "$REGION" --project ut-dws-udrc-dev --setup-file setup.py
Конвейер работает локально с прямым исполнителем И исполнителем потока данных. Не знаю, что ломается. Любая помощь будет очень признательна.
Комментарии:
1. Тебе случайно не удалось это исправить?
Ответ №1:
Так что мы должны это исправить. Документация по адресу https://cloud.google.com/dataflow/docs/guides/templates/configuring-flex-templates это ложь, и все переменные среды должны быть определены, хотя они могут быть пустыми. У наших Dockerfile
есть это:
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/app/entrypoint.py"
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/app/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_OPTIONS=""
ENV FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES=""
ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE=""