
# Spark client CLI介绍
Spark CLI详细的使用方法参考官方网站的描述：<https://archive.apache.org/dist/spark/docs/3.3.1/quick-start.html>。
#### 常用CLI
Spark常用的CLI如下所示：
- spark-shell
  提供了一个简单学习API的方法，类似于交互式数据分析的工具。同时支持Scala和Python两种语言。在Spark目录下，执行*./bin/spark-shell*即可进入Scala交互式界面从HDFS中获取数据，再操作RDD。
  示例：一行代码可以实现统计一个文件中所有单词。
  **scala\> sc.textFile("hdfs://10.96.1.57:9000//wordcount_data.txt").flatMap(l =\> l.split(" ")).map(w =\> (w,1)).reduceByKey(_+_).collect()**
  您可以直接在命令行中指定Keytab和Principal以获取认证，定期更新登录票据和授权tokens，避免认证过期。示例如下：
  **spark-shell --principal spark2x/hadoop.** *\<系统域名\>* **@** *\<系统域名\>* **--keytab ${BIGDATA_HOME}/FusionInsight_Spark2x_8.1.0.1/install/FusionInsight-Spark2x-3.1.1/keytab/spark2x/SparkResource/spark2x.keytab --master yarn**
  
- spark-submit
  用于提交Spark应用到Spark集群中运行，返回运行结果。需要指定class、master、jar包以及入参。
  示例：执行jar包中的GroupByTest例子，入参为4个，指定集群运行模式是local单核运行。
  **./bin/spark-submit --class org.apache.spark.examples.GroupByTest --master local\[1\] examples/jars/spark-examples_2.12-3.1.1-hw-ei-311001-SNAPSHOT.jar 6 10 10 3**
  您可以直接在命令行中指定Keytab和Principal以获取认证，定期更新登录票据和授权tokens，避免认证过期。示例如下：
  **spark-submit --class org.apache.spark.examples.GroupByTest --master yarn --principal spark2x/hadoop.** *\<系统域名\>* **@** *\<系统域名\>* **--keytab ${BIGDATA_HOME}/FusionInsight_Spark2x_8.1.0.1/install/FusionInsight-Spark2x-3.1.1/keytab/spark2x/SparkResource/spark2x.keytab examples/jars/spark-examples_2.12-3.1.1-hw-ei-311001-SNAPSHOT.jar 6 10 10 3**
  
- spark-sql
  可用于local模式或者集群模式运行Hive元数据服务以及命令行查询。如果需要查看其逻辑计划，只需在SQL语句前面加上explain extended即可。
  示例：
  Select key from src group by key
  您可以直接在命令行中指定Keytab和Principal以获取认证，定期更新登录票据和授权tokens，避免认证过期。示例如下：
  **spark-sql --principal spark2x/hadoop.** *\<系统域名\>* **@** *\<系统域名\>* **--keytab ${BIGDATA_HOME}/FusionInsight_Spark2x_8.1.0.1/install/FusionInsight-Spark2x-3.1.1/keytab/spark2x/SparkResource/spark2x.keytab --master yarn**
  
- run-example
  用来运行或者调试Spark开源社区中的自带的example。
  示例：执行SparkPi。
  ./run-example SparkPi 100
  
 
