转:Spark案例:Scala版统计单词个数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/howard2005/article/details/79331556
利用Spark的RDD可以对本机或集群上的文件进行词频统计。
1、创建Scala项目SparkScalaWordCount


2、创建lib目录,添加spark的jar,并添加作为项目的库

3、在项目根目录创建test.txt文件

4、创建WordCount对象


package net.hw.spark.wc

import org.apache.spark.{SparkConf, SparkContext}

/**
* Created by howard on 2018/2/6.
*/
object WordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local").setAppName("wordcount")
val sc = new SparkContext(conf)
val rdd = sc.textFile("test.txt")
.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
rdd.foreach(println)
rdd.saveAsTextFile("result")
}
}

5、启动WordCount,查看结果

统计结果还保存在result目录下的文本文件里:

6、利用Spark集群处理保存在HDFS上的文件
(1)上传test.txt到HDFS的word目录

(2)启动Spark集群的Master和Slave
[root@hadoop ~]# cd /home/software/spark-2.2.0-bin-hadoop2.7/conf
[root@hadoop conf]# vim spark-env.sh
export SPARK_WORKER_MEMOR=512m
[root@hadoop ~]# start-dfs.sh
[root@hadoop ~]# start-master.sh -h hadoop
[root@hadoop ~]# start-slave.sh spark://hadoop:7077

(2)修改WordCount
package net.hw.spark.wc

import org.apache.spark.{SparkConf, SparkContext}

/**
* Created by howard on 2018/2/6.
*/
object WordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
conf.setAppName("wordcount")
conf.setMaster("spark://hadoop:7077")
val sc = new SparkContext(conf)

val rdd = sc.textFile("hdfs://hadoop:9000/word/test.txt")
.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
rdd.saveAsTextFile("hdfs://hadoop:9000/word/result")
}
}
(3)打成jar包SparkScalaWordCount.jar


(4)将SparkScalaWordCount.jar上传到虚拟机hadoop的/home/howard目录

(5)在Spark服务器上运行
[root@hadoop howard]# spark-submit --class net.hw.spark.wc.WordCount ./SparkScalaWordCount.jar


将两个结果文件part-00000和part00001合并成一个结果文件result.txt存放虚拟机本地磁盘,执行:
[root@hadoop howard]# hadoop fs -getmerge /word/result result.txt
[root@hadoop howard]# cat result.txt
————————————————
版权声明:本文为CSDN博主「howard2005」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/howard2005/article/details/79331556

发布了12 篇原创文章 · 获赞 130 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/wdr2003/article/details/102621219