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 |