在启动 Google DataProc 集群以与 Jupyter 笔记本一起使用时,如何包含额外的 jar?

How can I include additional jars when starting a Google DataProc cluster to use with Jupyter notebooks?

我正在按照说明启动 Google DataProc 集群,并使用初始化脚本启动 jupyter notebook。

https://cloud.google.com/blog/big-data/2017/02/google-cloud-platform-for-data-scientists-using-jupyter-notebooks-with-apache-spark-on-google-cloud

如何在 Jupyter 笔记本(尤其是 pyspark)中生成的 SparkContext 中包含额外的 JAR 文件(例如 spark-xml)?

答案稍微取决于您要加载的 jar。例如,您可以在创建集群时将 spark-xml 与以下内容一起使用:

$ gcloud dataproc clusters create [cluster-name] \
    --zone [zone] \
    --initialization-actions \
       gs://dataproc-initialization-actions/jupyter/jupyter.sh \ 
    --properties spark:spark.jars.packages=com.databricks:spark-xml_2.11:0.4.1

要指定多个 Maven 坐标,您需要将 gcloud 字典分隔符从 ',' 换成其他字符(因为我们需要使用它来分隔要安装的包):

$ gcloud dataproc clusters create [cluster-name] \
    --zone [zone] \
    --initialization-actions \
       gs://dataproc-initialization-actions/jupyter/jupyter.sh \ 
    --properties=^#^spark:spark.jars.packages=artifact1,artifact2,artifact3

有关转义字符如何更改的详细信息,请参阅 gcloud:

$ gcloud help topic escaping