Apache Zeppelin 中 Spark 直譯器
概述
Apache Spark是一種快速和通用的叢集計算系統。它提供Java,Scala,Python和R中的高階API,以及支援一般執行圖的優化引擎。Zeppelin支援Apache Spark,Spark直譯器組由5個直譯器組成。
名稱 | 類 | 描述 |
---|---|---|
%spark | SparkInterpreter | 建立一個SparkContext並提供Scala環境 |
%spark.pyspark | PySparkInterpreter | 提供Python環境 |
%spark.r | SparkRInterpreter | 提供具有SparkR支援的R環境 |
%spark.sql | SparkSQLInterpreter | 提供SQL環境 |
%spark.dep | DepInterpreter | 依賴載入器 |
配置
Spark直譯器可以配置為由Zeppelin提供的屬性。您還可以設定表中未列出的其他Spark屬性。有關其他屬性的列表,請參閱Spark可用屬性。
屬性 | 預設 | 描述 |
---|---|---|
ARGS | Spark命令列參考 | |
master |
local[*] |
Spark master uri. 例如:spark://masterhost:7077 |
spark.app.name | Zeppelin | Spark應用的名稱。 |
spark.cores.max |
要使用的核心總數。 空值使用所有可用的核心。 |
|
spark.executor.memory | 1g |
每個worker例項的執行程式記憶體。 ex)512m,32g |
zeppelin.dep.additionalRemoteRepository |
id,remote-repository-URL,is-snapshot; 每個遠端儲存庫的列表。 |
|
zeppelin.dep.localrepo | local-repo | 依賴載入器的本地儲存庫 |
zeppelin.pyspark.python | python | Python命令來執行pyspark |
zeppelin.spark.concurrentSQL | python | 如果設定為true,則同時執行多個SQL。 |
zeppelin.spark.maxResult | 1000 | 要顯示的Spark SQL結果的最大數量。 |
zeppelin.spark.printREPLOutput | true | 列印REPL輸出 |
zeppelin.spark.useHiveContext | true | 如果它是真的,使用HiveContext而不是SQLContext。 |
zeppelin.spark.importImplicit | true | 匯入含義,UDF集合和sql如果設定為true。 |
沒有任何配置,Spark直譯器在本地模式下開箱即用。但是,如果要連線到Spark群集,則需要按照以下兩個簡單步驟進行操作。
1.匯出SPARK_HOME
在conf/zeppelin-env.sh
,匯出SPARK_HOME
環境變數與您的Spark安裝路徑。
例如,
export
SPARK_HOME = / usr / lib / spark
|
您可以選擇設定更多的環境變數
#
set hadoop conf dir
export
HADOOP_CONF_DIR = / usr / lib / hadoop
#
set options to pass spark-submit command
export
SPARK_SUBMIT_OPTIONS = "--packages
com.databricks:spark-csv_2.10:1.2.0"
#
extra classpath. e.g. set classpath for hive-site.xml
export
ZEPPELIN_INTP_CLASSPATH_OVERRIDES = / etc / hive / conf
|
對於Windows,確保你winutils.exe
在%HADOOP_HOME%\bin
。有關詳細資訊,請參閱在Windows上執行Hadoop的問題。
2.在“直譯器”選單中設定主機
啟動Zeppelin後,轉到直譯器選單並在Spark直譯器設定中編輯主屬性。該值可能因您的Spark群集部署型別而異。
例如,
- local[*] 本地模式
- spark://master:7077 standalone 叢集模式
- yarn-client Yarn 客戶端模式
- mesos://host:5050 Mesos 叢集模式
而已。Zeppelin將使用任何版本的Spark和任何部署型別,而不用這種方式重建Zeppelin。有關Spark&Zeppelin版本相容性的更多資訊,請參閱Zeppelin下載頁面中的“可用的口譯員”部分。
請注意,不匯出
SPARK_HOME
,它以本地模式執行,包含版本的Spark。附帶的版本可能因構建配置檔案而異。
SparkContext,SQLContext,SparkSession,ZeppelinContext
SparkContext,SQLContext和ZeppelinContext會自動建立並顯示為變數名sc
,sqlContext
並z
分別在Scala,Python和R環境中公開。從0.6.1起,spark
當您使用Spark 2.x時,SparkSession可以作為變數使用。
請注意,Scala / Python / R環境共享相同的SparkContext,SQLContext和ZeppelinContext例項。
依賴管理
在Spark直譯器中載入外部庫有兩種方法。首先是使用直譯器設定選單,其次是載入Spark屬性。
1.通過直譯器設定設定依賴關係
有關詳細資訊,請參閱直譯器依賴管理。
2.載入Spark屬性
一旦SPARK_HOME
被設定conf/zeppelin-env.sh
,Zeppelin使用spark-submit
作為Spark解釋賽跑者。spark-submit
支援兩種方式來載入配置。第一個是命令列選項,如--master和飛艇可以通過這些選項spark-submit
通過匯出SPARK_SUBMIT_OPTIONS
在conf/zeppelin-env.sh
。二是從中讀取配置選項SPARK_HOME/conf/spark-defaults.conf
。使用者可以設定分發庫的Spark屬性有:
火花defaults.conf | SPARK_SUBMIT_OPTIONS | 描述 |
---|---|---|
spark.jars | --jars | 包含在驅動程式和執行器類路徑上的本地jar的逗號分隔列表。 |
spark.jars.packages | --packages |
逗號分隔列表,用於包含在驅動程式和執行器類路徑上的jar的maven座標。 將搜尋當地的maven repo,然後搜尋maven中心和由–repositories提供的任何其他遠端儲存庫。
座標的格式應該是 |
spark.files | --files | 要放置在每個執行器的工作目錄中的逗號分隔的檔案列表。 |
以下是幾個例子:
-
SPARK_SUBMIT_OPTIONS
在conf/zeppelin-env.sh
export SPARK_SUBMIT_OPTIONS
=
"--packages com.databricks:spark-csv_2.10:1.2.0 --jars /path/mylib1.jar,/path/mylib2.jar --files /path/mylib1.py,/path/mylib2.zip,/path/mylib3.egg"
-
SPARK_HOME/conf/spark-defaults.conf
spark.jars
/
path
/
mylib1.jar,
/
path
/
mylib2.jar
spark.jars.packages com.databricks:spark
-
csv_2.
10
:
1.2
.
0
spark.files
/
path
/
mylib1.py,
/
path
/
mylib2.egg,
/
path
/
mylib3.
zip
3.通過%spark.dep直譯器載入動態依賴關係
注:
%spark.dep
解釋負載庫%spark
和%spark.pyspark
而不是%spark.sql
翻譯。所以我們建議你改用第一個選項。
當你的程式碼需要外部庫,而不是下載/複製/重新啟動Zeppelin,你可以使用%spark.dep
直譯器輕鬆地完成以下工作。
- 從maven庫遞迴載入庫
- 從本地檔案系統載入庫
- 新增額外的maven倉庫
- 自動將庫新增到SparkCluster(可以關閉)
直譯器利用Scala環境。所以你可以在這裡編寫任何Scala程式碼。需要注意的是%spark.dep
解釋前應使用%spark
,%spark.pyspark
,%spark.sql
。
這是用法