對於pyspark兩個組件火花的執行都需要共同努力:
pyspark
Python包
- 在星火實例的JVM
當啓動火花提交或pyspark事,這些腳本將兼顧兩者,即他們設置您的PYTHONPATH,PATH等,以便您的腳本可以找到pyspark,並且它們還會啓動spark實例,根據您的參數進行配置,例如--master X
或者,可以繞過這些腳本並直接在Python解釋器(如python myscript.py
)中運行Spark應用程序。當火花腳本開始變得更加複雜並最終收到自己的參數時,這一點特別有趣。
- 確保可以通過Python解釋器找到pyspark軟件包。正如已經討論過的,要麼將spark/python目錄添加到PYTHONPATH中,要麼使用pip install直接安裝pyspark。
- 從腳本中設置spark實例的參數(那些用於傳遞給pyspark的參數)。
- 對於火花配置爲你通常與--conf設置它們與配置對象(或字符串CONFIGS)在SparkSession.builder.config
- 對於主選項中所定義(如--master,或 - -driver-mem),您可以通過寫入PYSPARK_SUBMIT_ARGS環境變量來設置它們。爲了使事情變得更清潔和更安全,您可以從Python內部進行設置,並且spark會在啓動時讀取它。
- 啓動實例,只需要您從構建器對象中調用
getOrCreate()
。因此
腳本可以有這樣的事情:
from pyspark.sql import SparkSession
if __name__ == "__main__":
if spark_main_opts:
# Set main options, e.g. "--master local[4]"
os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"
# Set spark config
spark = (SparkSession.builder
.config("spark.checkpoint.compress", True)
.config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
.getOrCreate())
他們說,更改環境變量是「不超有效的,因爲它是由倉覆蓋非常快/火花提交。「[也許你可以從這個交流中學到一些東西](http://mail-archives.apache.org/mod_mbox/incubator-spark-user/201407.mbox/%[email protected].com%3E) – emmagras