Spark-wordcount

Scala开发Spark

jar包下载

在spark-1.6.1-bin-hadoop2.6找到spark-assembly-1.6.1-hadoop2.6.0.jar放到Scala的环境配置中

wordcount开发

创建Spark的配置对象SparkConf

1
2
3
val conf=new SparkConf().setAppName("wordcount") //设置程序的名称
conf.setMaster("spark://192.168.2.6:7077") //集群上运行
conf.setMaster("local") //本地运行

创建SparkContext对象

SparkContext是spark程序所有功能的唯一入口 核心作用:初始化spark应用程序运行的核心组件
包括DAGScheduler TaskScheduler SchedulerBackend 同时负责Spark程序往master注册程序等

1
val sc=new SparkContext(conf)

创建RDD(弹性分布式数据集)

Spark的RDD是一个不可变的分布式对象集合,每个RDD划分为一系列的partitions,分配给每个partitions的数据属于一个Task
1.根据外部数据来源HDFS
2.根据Scala集合
3.由其他RDD操作
wholeTextFiles()读取目录里面的小文件,返回(文件名,内容)对
sequenceFileK,V方法可以将SequenceFile转换为RDD
hadoopRDD()方法可以将其他任何Hadoop的输入类型转化为RDD

1
val lines=sc.textFile("/user/a.txt")

对RDD进行Transformation级别的处理,例如map filter等高阶操作

1
2
3
val words=lines.flatMap { lines => lines.split(" ") }
val counts=words.map { word => (word,1) }.reduceByKey(_+_)
counts.saveAsTextFile("/user/out")

打包操作放到服务器上运行

编写脚本 wordcount.sh

1
2
3
./spark-submit --class com.spark.wordcount --master spark://master:7077   wordcount.jar
类名 集群 jar包的全路径
chmod +x wordcount.sh