代码提交到 Spark Standalone 集群中运行
Spark-submit
第二种常见的spark程序方式
spark-submit [options] <app jar> <app options>
-
app jar
程序 Jar 包 -
app options
程序 Main 方法传入的参数 -
options
提交应用的参数, 可以有如下选项
参数 | 解释 |
---|---|
--master <url> |
同 Spark shell 的 Master, 可以是spark, yarn, mesos, kubernetes等 URL |
--deploy-mode <client or cluster> |
Driver 运行位置, 可选 Client 和 Cluster, 分别对应运行在本地和集群(Worker)中 |
--class <class full name> |
Jar 中的 Class, 程序入口 |
--jars <dependencies path> |
依赖 Jar 包的位置 |
--driver-memory <memory size> |
Driver 程序运行所需要的内存, 默认 512M |
--executor-memory <memory size> |
Executor 的内存大小, 默认 1G |
编写代码
package com.xp.rdd
import org.apache.spark.{SparkConf,SparkContext}
/**
* @author noor9
* @date 2021-01-12-17:12
*/
object WordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("word_count")
val sc = new SparkContext(conf)
val rdd1 = sc.textFile("hdfs://node01:8020/data/wordcount.txt")
val rdd2 = rdd1.flatMap(item => item.split(" "))
val rdd3 = rdd2.map(item => (item,1))
val rdd4 = rdd3.reduceByKey((curr,agg)=>curr+agg)
val result = rdd4.collect()
result.foreach(item => println(item))
}
}
在idea中使用maven打包,找到jar包
将jar包上传到虚拟机
开启spark
spark-submit 命令完成运行
获取运行class的全路径
spark-submit --master spark://node01:7077 \
--class cn.itcast.spark.WordCounts \
original-spark-0.1.0.jar