Spark工具类——spark-shell


发布于 2024-04-10 / 53 阅读 / 0 评论 /
spark-shell是一种对spark程序交互式开发的途径。spark-shell提供了一种学习API的简单方式,以及一个能够进行交互式分析数据的强大工具,可以使用scala编写(scala运行与Java虚拟机可以使用现有的Java库)或使用Python编写。

spark-shell的本质是在后台调用了spark-submit脚本来启动应用程序的,在spark-shell中已经创建了一个名为sc的SparkContext对象,在4个CPU核运行spark-shell命令如下:

spark-shell --master local[4]

如果需要添加jar包,则命令如下:

spark-shell --master local[4] --jars xxx.jar,yyy,jar

- -master用来设置context将要连接并使用的资源主节点,master的值是standalone模式中spark的集群地址、yarn或mesos集群的URL,或是一个local地址。

- -jars可以添加需要用到的jar包,通过逗号分隔来添加多个包。

通过执行sh spark-shell - -help命令,可查看spark-shell支持的选项和参数。下表为基本的选项及其说明。

参数

说明

支持模式

--master {MASTER_URL}

指定资源主节点,有5种模式:

spark://host:port

mesos://host:port

yarn

k8s://https://host:port

local(默认为local[*])

ALL

--deploy-mode {DEPLOY_MODE}

可取值有两个:

client:默认值,本地启动driver程序。

cluster:在集群中的某个worker机器中启动driver程序

ALL

--class {CLASS_NAME}

对于java或scala类应用来说,表示应用的main函数所在类

ALL

--name {NAME}

应用名称

ALL

--jars {JARS}

driver和executor进程的classpath中包含的jar包列表,通过逗号分隔。

ALL

--packages

表示driver和executor进程的classpath中需要从maven仓库中拉取的协同jar包列表。首先在本地maven仓库查找,然后去- -repositories参数指定的maven仓库。每个协同jar包的命名格式为“groupId:artifactId:version”。

ALL

--exclude-packages

为了避免包冲突,需要把一些从- -packages引入的包删除,格式为“逗号分隔的groupId:artifactId列表”

ALL

--repositories

远程maven仓库列表,逗号分隔

ALL

--files {FILES}

需放置在每个executor工作目录下的文件列表,逗号分隔。在executor中,这些文件路径可以通过SparkFiles.get(fileName)获取。

ALL

--conf {PROP=VALUE}

任意的spark配置参数

ALL

--properties-file {FILE}

额外属性文件路径。如果没有制定,则属性文件为conf/spark-defaults.conf。

ALL

--driver-memory {MEM}

driver的内存大小,默认为1024M。

ALL

--driver-java-options

传递给driver进程的额外java选项。

ALL

--driver-library-path

传递给driver的额外的包路径

ALL

--driver-class-path

传递给driver的额外类路径。需要注意的是,通过--jars命令添加的jar包会把类自动添加到classpath中。

ALL

--executor-memory {MEM}

每个executor进程的内存大小,默认为1G。

ALL

- -proxy-user {NAME}

提交应用时,使用的代理用户名称。如果使用了--principal或--keytab,则此参数无效。

ALL

--help, -h

查看帮助信息并退出

ALL

--verbose, -v

打印额外的debug日志

ALL

--version

打印当前spark的版本信息

ALL

--driver-cores {NUM}

driver使用的cpu核数,只有在cluster模式中有效,默认为1。

CLUSTER

--supervise

如果指定,则当失败时重启driver。

Standalone或Mesos集群模式

--kill {SUBMISSION_ID}

如果指定,kill指定的driver

Standalone或Mesos集群模式

--status {SUBMISSION_ID}

如果指定,向指定的driver发送查看status的请求

Standalone或Mesos集群模式

--total-executor-cores {NUM}

所有executors所能使用的cpu核数总和

Standalone或Mesos

--executor-cores {NUM}

每个executor的cpu核数,yarn模式下默认为1,standalone模式下默认为所有可用的cpu核数

Standalone或YARN

--queue {QUEUE_NAME}

提交到的yarn队列名称,默认为“default”

YARN

--num-executors {NUM}

需要启动的executor的数量,默认为2。如果设置了动态分配,初始的数量一定不小于{NUM}

YARN

--archives {ARCHIVES}

逗号archive包列表,会被解压到每个executor的工作目录

YARN

--principal {PRINCIPAL}

当运行在安全模式的HDFS之上时,需要通过此principal登陆认证中心。

YARN

--keytab {KEYTAB}

指定principal的keytab文件全路径。keytab会通过安全分布式缓存拷贝到运行Application Master的节点。如果更新了ticket,则会定期委派token。

YARN