我想从 Azure 上的 Spark HDInsight 群集上运行的 jupyter 服务中使用来自 https://github.com/databricks/spark-csv 的spark-csv
包。
从本地群集中,我知道我可以这样做,例如:
export PACKAGES="com.databricks:spark-csv_2.11:1.3.0"
export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
但是我不明白/不知道将其放在 Azure 火花配置中的哪个位置。任何线索提示都值得赞赏。
您可以使用%%configure
魔法添加任何所需的外部包。它应该像将以下代码片段放在第一个代码单元中一样简单。
%%configure
{ "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
文档中还介绍了此特定示例。只需确保在%%configure
单元格之后启动 Spark 会话即可。
从Jupyter笔记本管理集群中的Spark包的一个选项是Apache Toree。 Toree为您提供了一些额外的线条魔法,允许您从Jupyter笔记本中管理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
我知道你特别问过运行PySpark的Jupyter笔记本。 目前,Apache Toree是一个孵化项目。我在将提供的线路魔法与 pyspark 笔记本一起使用时遇到了麻烦。也许你会有更好的运气。我正在研究为什么会这样,但就我个人而言,我更喜欢Spark中的Scala。希望这有帮助!
可以尝试在创建 HDInsight 群集时在 Azure 中调用的脚本中执行两行代码(导出...)。
由于使用的是 HDInsight,因此可以在导入所需库的 Spark 群集负载上使用"脚本操作"。该脚本可以是一个非常简单的 shell 脚本,它可以在启动时自动执行,并在调整集群大小时在新节点上自动重新执行。
https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-customize-cluster-linux/