如何在Apache Beam+GCP Dataflow中运行PEX包?
如何在Beam Dataflow Flex Template中适配Pants构建的PEX包
我们团队计划采用Pants构建系统,它可以便捷地将Python代码打包为仅包含必要依赖的PEX文件,但目前找不到关于PEX在Beam + Dataflow任务中运行方式的相关文档。
当前我们的实现方式是通过pip install安装所有依赖,并使用pip install -e将源码安装到SDK镜像容器中,对应的Dockerfile如下:
FROM python:3.11-slim COPY --from=apache/beam_python3.11_sdk:2.61.0 /opt/apache/beam /opt/apache/beam COPY --from=gcr.io/dataflow-templates-base/python311-template-launcher-base:20241127-rc00 /opt/google/dataflow/python_template_launcher /opt/google/dataflow/python_template_launcher COPY repo repo RUN pip install (with lots of flags) -r repo/requirements.txt RUN pip install -e repo ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/repo/pipeline.py" ENTRYPOINT ["/opt/apache/beam/boot"]
我们将该容器以Flex template的形式在Dataflow上运行。由于Dockerfile中没有直接调用Python的逻辑,我不清楚该如何将现有方案适配为使用PEX包。
内容的提问来源于stack exchange,提问作者Matthew Albrecht
相关产品推荐
相关产品推荐

