一、将Spark代码提交到集群:
1、将setMaster注释:
2、注意输入和输出的路径,必须是HDFS存在的某个路径
3、使用maven将代码打成jar包并上传
4、构建提交命令(使用的是cluster):
spark-submit --master yarn --deploy-mode cluster --class com.spark.core.WordCountDemo01 spark-1.0.jar
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object WordCountDemo01 {
def main(args: Array[String]): Unit = {
//第一个代码:spark:wordcount
//构建Spark的配置文件
val conf: SparkConf = new SparkConf()
//配置spark的运行模式
//conf.setMaster("local")
//配置spark的任务名称
conf.setAppName("WordCountDemo01")
//搭建spark的环境,此处的命名方式需要确定sc表示的时spark的运行环境
val sc: SparkContext = new SparkContext(conf)
val wordsRDD: RDD[String] = sc.textFile("/data/words.txt")
val words1RDD: RDD[String] = wordsRDD.flatMap(kv => kv.split(","))
val words2RDD: RDD[(String, Iterable[String])] = words1RDD.groupBy(word => word)
val words3RDD: RDD[String] = words2RDD.map(kv => s"${kv._1},${kv._2.size}")
val system: FileSystem = FileSystem.get(new Configuration())
/**
* 可以使用HDFS的Java API提前将目录删除避免出错
*/
if(system.exists(new Path("/data1"))){
system.delete(new Path("/data1"),true)
}
words3RDD.saveAsTextFile("/data1/")
}
}