Scala Spark WordCount的实现如下
安 装 环 境:
- centOS 7,64位虚拟机
- hadoop2.7.2
- jdk1.8
- scala 2.11.8
- spark 2.1.1
- on1是我的主机名
一、用idea创建一个Maven工程
在pom文件里的dependencies标签下添加依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
</dependency>
二、写一个Scala的object类
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")
val sc = new SparkContext(conf)
//保存位置用hdfs
sc.textFile(args(0)).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile(args(1))
sc.stop()
}
}
三、打成jar包放入linux里
**四、在linux开启Hadoop集群和Zookeeper服务
在主机on1运行 】# start-all.sh
这个是每台机都要运行 】#zkServer.sh start
1、写一个aa.txt文件**
】# vi aa.txt
2、在hadoop集群新建文件夹 /input/data/
】# hdfs dfs -mkdir -p /input/data/
3、将aa.txt放入集群/input/data/目录下
】# hdfs dfs -put aa.txt /input/data/
五、在linux开启Spark高可用(进入在spark的根目录)
spark-2.1.1】# sbin/start-all.sh
六、在jar所在的路径下运行
】# spark-submit --master spark://on1:7077 --class WordCount spark-SNAPSHOT.jar hdfs://on1:9000/input/data/aa.txt hdfs://on1:9000/out111
注意:hadoop集群上的根目录不能有/out111
如有,请删了或改下/out111 为一个不存在的集群路径
on1:9000是namenode节点active状态下的端口号,如你的端口号是8020,则改为 hdfs://主机名:8020
七、查看结果
~】# hdfs dfs -cat /out111/p*
collect 1
hadoop 1
hive 5
至此大功告成!