博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark(二): spark-submit命令详解
阅读量:4041 次
发布时间:2019-05-24

本文共 1909 字,大约阅读时间需要 6 分钟。

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!"

    1

    2
    3
    4
    5
    6
    7
    8

当SparkSession在后台启动时,不需要在创建一个SparkContext,为了获得访问权,可以简单调用sc = spark.SparkContext。

————————————————
版权声明:本文为CSDN博主「roguesir」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/roguesir/article/details/83317059

你可能感兴趣的文章
C&C++(1) - extern “C“的作用
查看>>
C&C++(2) - void*在C和C++中的不同点
查看>>
C&C++(3) - 在C与C++中运行结果不同的程序
查看>>
C&C++(4) - C与C++中字符串的类型差异
查看>>
C++引用(1) - 基本介绍
查看>>
C++引用(2) - 引用能否指向一个无效地址?
查看>>
C++引用(3) - 使用引用或者指针传递参数
查看>>
C++函数重载(1) - 基本介绍
查看>>
C++函数重载(2) - 不能被重载的函数
查看>>
C++函数重载(3) - 函数重载中的const关键字
查看>>
C++函数重载(4) - 函数的返回类型
查看>>
C++函数重载(5) - 函数重载在类继承中的行为
查看>>
C++函数重载(6) - main函数重载
查看>>
C++内联函数
查看>>
C++内存分配 - malloc vs new 以及 delete vs free
查看>>
C++类与对象(1) - 基本概念
查看>>
C++类与对象(2) - class可以拥有自身类型的对象
查看>>
C++类与对象(3) - 空class&struct的大小
查看>>
C++静态成员(1) - 静态成员函数的特性
查看>>
C++静态成员(2) - 静态数据成员
查看>>