【PySpark學習筆記三】spark-submit命令詳解

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章