使用多个初始化脚本时,Dataproc 初始化脚本错误 pip 命令未找到错误



以下是我用来创建dataproc集群的命令。这里有两个初始化脚本。(1(jupyter.sh(2(my_initialize.sh

gcloud dataproc clusters create dproc 
--subnet default --zone us-west1-a --project myproject 
--initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh,gs://mydataproc/my_initialize.sh 
--master-machine-type n1-standard-8 --master-boot-disk-size 40 
--worker-machine-type n1-standard-8 --worker-boot-disk-size 40 --num-workers 4

以下是my_initialize.sh

#!/usr/bin/env bash
pip install --upgrade google-cloud-bigquery

当我们安装 jupyter.sh 时,我相信 pip 已经安装了。

由于某种原因,群集创建失败,错误为 第 2 行:找不到 pip 命令。

我相信这是一个问题,其中 init 操作没有看到以前的 init 操作对环境的变化。我们将在未来几周内为此推出修复程序,因此在此之后不需要采购profile.d。这将在发行说明中公布。

同时(正如@Karthik Palaniappan 提到的,只需按其完整路径/opt/conda/bin/pip使用 pip 即可。

最后,在 Dataproc1.3映像上,您可以使用 Anaconda+Jupyter 可选组件。使用组件而不是初始化操作将减少整体群集启动时间。

是的,这是因为pip/opt/conda/bin/中的其他任何东西都没有为您的第二个初始化操作$PATH。事实上,即使您运行sudo su root: https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/issues/246,它们也不会最终出现在root用户的路径上。

如果您有兴趣解决这个问题,我很乐意接受 PR。作为起点:bootstrap-conda.sh在这里设置/etc/profile.d/conda.sh

和其他脚本显式获取该文件。

除非有一种简单的方法可以在系统范围内更改$PATH,否则我认为最好的选择是明确获取/etc/profile.d/conda.sh

或者,使用其绝对路径运行pip,例如/opt/conda/bin/pip install ....

最新更新