python-3.x - 如何在自定义 dataproc 镜像中安装可选组件(anaconda、jupyter)

标签 python-3.x anaconda google-cloud-dataproc

为了加快我的集群实例化时间,我创建了一个自定义镜像,其中使用适用于 dataproc 镜像 1.5.34-debian10 的 miniconda3 安装了所有附加依赖项。 (我按照此处的步骤操作:GCP Dataproc custom image Python environment 以确保我使用了正确的 python 环境)。

但是,当我使用 --optional-components ANACONDA,JUPYTER 启动我的集群时,我的自定义依赖项被删除,我只剩下 anaconda 和 jupyter 的基本安装。我假设 anaconda 安装正在覆盖我的自定义依赖项。有什么方法可以确保我的依赖项不被覆盖?如果没有,是否可以安装 anaconda 和 jupyter 作为我的自定义 dataproc 镜像的一部分?

我使用以下命令创建自定义图像:

python3 generate_custom_image.py \
    --image-name test-dataproc-image-1 \
    --dataproc-version 1.5.34-debian10 \
    --customization-script ./pip-install.sh \
    --zone <my_zone> \
    --gcs-bucket <my_gcs_bucket> \
    --subnet <my_subnet> \
    --metadata 'PIP_PACKAGES="dask[distributed] dask-yarn==0.8 google-cloud-pubsub==2.4.1 kneed==0.7.0 google-cloud-secret-manager==2.4.0  pandas-gbq==0.15.0 pyarrow==3.0.0 leidenalg==0.8.4 cdlib==0.2.0 bigquery==0.0.12 google-cloud-storage==1.37.1 facebook_business pyemd==0.5.1 pysftp==0.2.9 gensim==4.0.1 wordcloud==1.8.1 spacy==2.3.0 https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.0/en_core_web_sm-2.3.0.tar.gz --ignore-installed PyYAML"'
    --no-smoke-test

以下是我的自定义脚本 pip-install.sh 的内容:

which python 

# Activate miniconda3 optional component.
cat >>/etc/google-dataproc/dataproc.properties <<EOF
dataproc.components.activate=miniconda3
EOF
export BDUTIL_DIR=/usr/local/share/google/dataproc/bdutil
bash /usr/local/share/google/dataproc/bdutil/components/activate/miniconda3.sh
source /etc/profile.d/effective-python.sh

# Now this is /opt/conda/default/bin/python
which python 
apt update
apt install python3-pip -y
python -m pip install --upgrade ${PACKAGES}

最佳答案

customize_conda.sh脚本是为自定义图像自定义 Conda env 的推荐方法。

如果您需要的不仅仅是脚本,您可以阅读代码并创建自己的脚本,但无论如何您都希望使用绝对路径,例如,/opt/conda/anaconda/bin/conda, /opt/conda/anaconda/bin/pip, /opt/conda/miniconda3/bin/conda, /opt/conda/miniconda3/bin/pip 为 Anaconda/Miniconda 环境安装/卸载包。

关于python-3.x - 如何在自定义 dataproc 镜像中安装可选组件(anaconda、jupyter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67357670/

相关文章:

python - 将元组中的字符索引为整数并将其用于字典

python - AttributeError: 'bool' 对象在导入 SAS 数据集时没有属性 'sum'

python - 使用 nltk.corpus.gutenberg.fileids() 解码路径中的错误

bash - dataproc yarn 属性中的特殊字符

Python - 如何在 QWebEnginePage 中使用 mainframe() 方法 [mainframe() 错误]

python-3.x - 保存时Python IDLE崩溃了,我所有的代码都消失了

Java Runtime.getRuntime().exec 无法在命令中使用双引号

google-cloud-dataproc - Blob 的 Google Cloud Storage 原子创建

python - Python 3 中的相对导入

python - 如果我已经安装了 PyCharm,还需要安装 Anaconda 吗?如果是的话,他们会合作得很好吗?