spark-submit命令利用可重用的模塊形式編寫腳本,並且以編程方式提交作業到Spark。
spark-submit命令
spark-submit命令提供一個統一的API把應用程序部署到各種Spark支持的集羣管理器上,從而免除了單獨配置每個應用程序。
命令行參數
下面逐個介紹這些參數:
--master
:用於設置主結點URL的參數。local
:用於執行本地機器的代碼。Spark運行一個單一的線程,在一個多核機器上,通過local[n]
來指定一個具體使用的內核數,n指使用的內核數目,local[*]
來指定運行和Spark機器內核一樣多的複雜線程。spark://host:port
:這是一個URL和一個Spark單機集羣的端口。mesos://host:port
:這是一個URL和一個部署在Mesos的Spark集羣的端口。yarn
:作爲負載均衡器,用於從運行Yarn的頭結點提交作業。
--deploy-mode
:允許決定是否在本地(使用client)啓動Spark驅動成簇的參數,或者在集羣內(使用cluster選項)的其中一臺工作機器上啓動。默人是client。--name
:應用程序名稱。注意,創建SparkSession時,如果是以編程方式指定應用程序名稱,那麼來自命令行的參數會被重寫。--py-files
:.py
、.egg
或者.zip
文件的逗號分隔列表,包括Python應用程序,這些文件將被交付給每一個執行器來使用。--files
:命令給出一個逗號分隔的文件列表,這些文件將被交付給每一個執行器來使用。--conf
:參數通過命令行動態地更改應用程序的配置。語法是:<Spark property>=<value for the property>
。--properties-file
:配置文件。它應該有和conf/spark-defaults.conf
文件相同的屬性設置,也是可讀的。--driver-memory
:指定應用程序在驅動程序上分配多少內存的參數。允許的值又一個語法限制,類似於1000M,2G。默認值是1024M。--exectuor-memory
:參數指定每個執行器爲應用程序分配多少內存。默認值是1G。--help
:展示幫助信息和退出。--verbose
:在運行應用程序時打印附加調試信息。--version
:打印Spark版本。
僅在Spark單機集羣(cluster)部署模式下,或者在一個Yarn上的部署集羣上,可以使用--driver-cores
來允許指定驅動程序的內核數量,默認值爲1。盡在一個Spark單機或者Mesos集羣(cluster)部署模型中,一下參數或許會用到:
--supervise
:當驅動程序丟失或者失敗時,就會重新啓動該驅動程序。--kill
:將完成的過程賦予submission_id。--status
:請求應用程序的狀態。
在Spark單機和Mesos(client部署模式)中,可以指定--total-exectuor-cores
,該參數會爲所有執行器(不是每一個)請求指定的內核數量。另一方面,在Spark單機和YARN中,只有--executor-cores
參數指定每個執行器的內核數量(在YARN模式中默認值爲1,或者對於單機模式下所有工作節點可用的內核)。
另外,向YARN集羣提交時你可以指定:
--queue
:指定YARN上的隊列,一邊將改作業提交到隊列(默認值是default)。
--num-executors
:指定需要多少個執行器來請求改作業的參數。如果啓動了動態分配,則執行器的初始數量至少是指定的數量。
創建SparkSession
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("AppName") \
.getOrCreate()
print "Session created!"
當SparkSession在後臺啓動時,不需要在創建一個SparkContext,爲了獲得訪問權,可以簡單調用sc = spark.SparkContext
。
- 更新時間:2018-10-23