为啥使用“--requirements_file”将依赖项上传到 GCS?
Posted
技术标签:
【中文标题】为啥使用“--requirements_file”将依赖项上传到 GCS?【英文标题】:Why using "--requirements_file" uploads dependencies onto GCS?为什么使用“--requirements_file”将依赖项上传到 GCS? 【发布时间】:2019-12-14 09:42:15 【问题描述】:我目前正在使用这些参数生成一个模板:
--runner DataflowRunner \
--requirements_file requirements.txt \
--project $GOOGLE_PROJECT_ID \
--output $GENERATED_FILES_PATH/staging \
--staging_location=$GENERATED_FILES_PATH/staging \
--temp_location=$GENERATED_FILES_PATH/temp \
--template_location=$GENERATED_FILES_PATH/templates/calculation-template \
SDK 正在将requirements.txt
中指定的依赖项上传到暂存部分的 GCS。我不明白...对我来说,使用这种文件将允许工作人员直接从官方 pip 注册表中提取依赖项,而不是从我的 GCS 中提取依赖项,对吧?
这使得运行这个命令很长时间,因为它需要上传包:/
任何解释为什么会发生?也许我做错了什么?
谢谢,
【问题讨论】:
【参考方案1】:我相信这样做是为了让 Dataflow 工作器启动过程更加高效和一致(无论是在最初还是在自动缩放时)。如果没有这个,每次 Dataflow 工作人员启动时,该工作人员都必须直接连接到 PyPI 以查找最新匹配的依赖项版本。取而代之的是,一组依赖项在管道启动时暂存,并在整个管道执行过程中始终安装在工作人员中。
【讨论】:
这种行为是否得到保证?我没有在文档中看到它。这种实现将依赖项暂存到 GCS 而不是从 Internet 中提取,对 Dataflow 工作人员的网络功能产生了影响。以上是关于为啥使用“--requirements_file”将依赖项上传到 GCS?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 glTranslatef?为啥不直接更改渲染坐标?
为啥在参数周围使用 /*、*/ 以及为啥在提取数组长度时使用 >>>? [复制]
为啥我们使用 hadoop mapreduce 进行数据处理?为啥不在本地机器上做呢?