我正在尝试在数据流管道中安装依赖项。首先我使用了requirements_file标志,但我得到了(ModuleNotFoundError:没有名为“unidecode”的模块[运行“Map(wordcleanfn)-ptransform-54”时]) 添加的唯一包是 unidecode。 尝试第二个选项,我按照谷歌文档配置了 Docker 映像:
FROM apache/beam_python3.10_sdk:2.52.0
ENV RUN_PYTHON_SDK_IN_DEFAULT_ENVIRONMENT=1
RUN pip install unidecode
RUN apt-get update && apt-get install -y
ENTRYPOINT ["/opt/apache/beam/boot"]
它在gcp项目vm中编译并推送到artifactregistry 然后我生成了管道模板:
python -m mytestcode \
--project myprojectid \
--region us-central1 \
--temp_location gs://mybucket/beam_test/tmp/ \
--runner DataflowRunner \
--staging_location gs://mybucket/beam_test/stage_output/ \
--template_name mytestcode_template \
--customvariable 500 \
--experiments use_runner_v2 \
--sdk_container_image us-central1-docker.pkg.dev/myprojectid/myimagerepo/dataflowtest-image:0.0.1 \
--sdk_location container
毕竟我使用 UI 从模板创建了作业,但错误是相同的,请问有人可以帮助我吗? 据我所知,工作人员正在使用默认的beam sdk,这是正确的吗?我该如何解决它?
如果您在代码顶部全局声明它,您将收到此错误。例如,假设您正在 ParDo 函数内执行 unidecode 库操作。如果是这种情况,请使用 ParDo 函数内的 import 语句,而不是在代码的第一行中导入它。
就我而言,我在 ParDo 函数中使用日期时间库。所以我在 ParDo 函数中导入了日期时间库
class sample_function(beam.DoFn):
def process(self, element):
from datetime import datetime