如何将 spark-csv 包添加到 Azure 上的 jupyter 服务器以供 iPython 使用

How to add spark-csv package to jupyter server on Azure for use with iPython

我想在 Azure 上的 Spark HDInsight 集群上的 jupyter 服务 运行 中使用来自 https://github.com/databricks/spark-csvspark-csv 包。

从本地集群我知道我可以这样做:

export PACKAGES="com.databricks:spark-csv_2.11:1.3.0"
export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"

但是我不知道 understand/know 将它放在 Azure spark 配置中的什么地方。感谢任何线索提示。

您可以尝试在创建 HDInsight 群集时在 Azure 中调用的脚本中执行您的两行代码 (export ...)。

从 Jupyter notebook 管理集群中的 Spark 包的一个选项是 Apache Toree。 Toree 为您提供了一些额外的行魔法,使您可以从 Jupyter notebook 中管理 Spark 包。例如,在 Jupyter scala 笔记本中,您可以使用

安装 spark-csv
%AddDeps com.databricks spark-csv_2.11 1.4.0 --transitive

要在您的 Spark 集群上安装 Apache Toree,请通过 ssh 连接到您的 Spark 集群,然后 运行、

sudo pip install --pre toree
sudo jupyter toree install \
   --spark_home=$SPARK_HOME \
   --interpreters=PySpark,SQL,Scala,SparkR 

我知道您特别询问了有关 Jupyter notebooks 运行ning PySpark 的问题。目前,Apache Toree 是一个孵化项目。我在使用提供的 line magics 和 pyspark notebooks 时遇到了麻烦 运行。也许你会有更好的运气。我正在研究这是为什么,但就我个人而言,我更喜欢 Spark 中的 Scala。希望这对您有所帮助!

您可以使用 %%configure 魔法来添加任何需要的外部包。 它应该像将以下代码片段放入您的第一个代码单元一样简单。

%%configure
{ "packages":["com.databricks:spark-csv_2.10:1.4.0"] }

documentation 中也介绍了这个具体示例。只需确保在 %%configure 单元 之后 启动 Spark 会话。

由于您使用的是 HDInsight,因此您可以在导入所需库的 Spark 群集负载上使用 "Script Action"。该脚本可以是一个非常简单的 shell 脚本,它可以在启动时自动执行,并在集群大小调整时自动在新节点上重新执行。

https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-customize-cluster-linux/