Spark集群有時(shí)需要使用到一些第三方包弦追,比如 graphframes,kafka 等等(以下均以 graphframes 為例)妓忍。按照官方文檔稿黄,通常一個(gè) packages 的命令行選項(xiàng)即可解決問題:
$SPARK_HOME/bin/spark-shell --packages graphframes:graphframes:0.6.0-spark2.2-s_2.11
這個(gè)命令會(huì)從網(wǎng)絡(luò)上下載 graphframes 及其依賴的 jar 包唱星,保存到 $HOME/.ivy2/jars
中雳旅。但是當(dāng) Spark 集群是離線或者處于網(wǎng)絡(luò)情況不佳時(shí)如何處理呢?
找一臺(tái)可以上網(wǎng)的主機(jī)下載相關(guān)包间聊。
利用 packages 命令行選項(xiàng)攒盈,將下載的 jar 包從$HOME/.ivy2/jars
中提取出來。如果使用 pyspark哎榴,還需要提取相關(guān)的 python 包型豁。
對(duì)于 graphframes 來說,就是將 graphframes_graphframes-0.6.0-spark2.2-s_2.11.jar 包解壓尚蝌,打包其中的 graphframes 文件夾迎变,并將該 zip 包加入環(huán)境變量 PYTHONPATH。
unzip graphframes_graphframes-0.6.0-spark2.2-s_2.11.jar
zip -r graphframes.zip graphframes
- 將 packages 選項(xiàng)換成 jars 選項(xiàng)飘言,把剛才下載的 jar 包都加入到選項(xiàng)中衣形。
命令行就變成:
export PYTHONPATH=$PYTHONPATH:/path/to/graphframes.zip
$SPARK_HOME/bin/spark-shell --jars /path/to/graphframes:graphframes:0.6.0-spark2.2-s_2.11.jar,/path/to/xxx.jar