为什么我在Dataproc上的initialize_action脚本无法设置环境变量?

时间:2019-02-17 01:16:53

标签: google-cloud-platform environment-variables google-cloud-dataproc

我正在尝试设置一个包含Dataproc集群存储桶的环境变量。基本上,我将这些行添加到初始化操作脚本中:

BUCKET=$(/usr/share/google/get_metadata_value attributes/dataproc-bucket)

cat << 'EOF' >> ~/.bashrc
export BUCKET=${BUCKET}
EOF

source /root/.bashrc

但是,当我ssh进入master以检查是否将此行添加到bashrc文件中时,我什么都找不到。您能告诉我我在做什么错吗,或者您将如何解决这个问题?谢谢。

3 个答案:

答案 0 :(得分:1)

经过多次试验,我首先注意到,我正在操纵不同的路径,即$HOME/root/。然后,两个路径下都存在.bashrc文件,最终代码段如下所示:

BUCKET=$(/usr/share/google/get_metadata_value attributes/dataproc-bucket)
echo "export BUCKET=${BUCKET}" | tee -a $HOME/.bashrc

source $HOME/.bashrc

如果有其他意见,请不要犹豫。

答案 1 :(得分:0)

初始化动作以root的身份运行。您可以更新/etc/profile

MY_VAR="hello"
echo "export MY_VAR=${MY_VAR}" | tee -a /etc/profile
source /etc/profile

答案 2 :(得分:0)

您可以通过以下方式更新存储桶变量:

BUCKET=$(/usr/share/google/get_metadata_value attributes/dataproc-bucket)
echo "export BUCKET=${BUCKET}" | tee -a /etc/*bashrc

但是,为了在集群上使用spark,我还必须更新spark配置文件:

BUCKET=$(/usr/share/google/get_metadata_value attributes/dataproc-bucket)
echo "export BUCKET=${BUCKET}" | tee -a /etc/profile.d/spark_config.sh /etc/*bashrc /usr/lib/spark/conf/spark-env.sh