Spark算法实例:词频统计

原标题:Spark算法实例:词频统计

Spark算法实例:词频统计
文章图片
Spark支持Scala、Python、Java、R等编程语言 。 Scala作为Spark的原生语言 , 代码优雅、简洁而且功能完善 , 很多开发者都比较认可 , 它是业界广泛使用的Spark程序开发语言 。 Spark也提供了Python的编程模型PySpark , 使得Python可以作为Spark开发语言之一 。 尽管现在PySpark还不能支持所有的SparkAPI , 但是以后的支持度会越来越高 。 Java也可以作为Spark的开发语言之一 , 但是相对于前两者而已 , 逊色了很多 , 但是Java8却很好地适应了Spark的开发风格 。 无论使用Scala、Python还是Java编程程序都需要遵循Spark编程模型 , 考虑对Spark平台支持的有力程度来说 , Spark对Scala语言的支持是最好的 , 因为它有最丰富的和最易用的编程接口 。
本篇用词频统计实例展示Spark算法 。
01
词频统计描述
词频统计(WordCount)的主要功能是统计文本中某单词出现的次数 , 其形式如图8-5所示 。

Spark算法实例:词频统计
文章图片
▍图8-5词频统计
02
词频统计编程
1.单词文件sw.txt内容如下:
SparkPythonScala
HadoopSparkPython
2.上传sw.txt到HDFS:
#hdfsdfs-mkdir/input
#hdfsdfs-putsw.txt/input
3.运行Scala-IDE , 创建项目“WCPG”和类“WordCount.scala” , 如图8-6所示 。

Spark算法实例:词频统计
文章图片
▍图8-6Scala-IDE集成环境
Scala语言编写的WordCount.scala代码如下:
importorg.apache.spark.sql.SparkSession
objectWordCount{
defmain(args:Array[String]){
if(args.length<1){
System.err.println("Usage:WordCount<file>")
System.exit(1)
}
valspark=SparkSession
.builder
.appName("ScalaWordCount")
.getOrCreate
valline=spark.read.textFile(args(0)).rdd
line.flatMap(_.split("")).map((_,1))
.reduceByKey(_+_).collect.foreach(println)
spark.stop
}
}
4.在Scala-IDE中导出“WCPG.jar” 。
5.运行WCPG.jar:
#spark-submit--masterspark://master:7077
--classWordCountWCPG.jar/input
>WordCount.txt
6.查看WordCount运行结果如下:
#catWordCount.txt
(Spark,2)
(Python,2)
(Scala,1)
(Hadoop,1)
7.Python语言编写的WordCount.py代码如下:
from__future__importprint_function
importsys
fromoperatorimportadd
frompyspark.sqlimportSparkSession
if__name__=="__main__":
iflen(sys.argv)!=2:
print("Usage:wordcount<file>",file=sys.stderr)
exit(-1)
spark=SparkSession
.builder
.appName("PythonWordCount")
.getOrCreate
lines=spark.read.text(sys.argv[1]).rdd.map(lambdar:r[0])
counts=lines.flatMap(lambdax:x.split(''))
.map(lambdax:(x,1))
.reduceByKey(add)
output=counts.collect
for(word,count)inoutput:
print("%s:%i"%(word,count))
spark.stop
8.运行WordCount.py , 操作如下:
#spark-submit--masterspark://master:7077
--namePythonWCWordCount.py/input
>WordCount.txt
9.查看WordCount.py运行结果如下:
#catWordCount.txt
Python:2
Spark:2
Hadoop:1
Scala:1
03
参考书籍
《大数据技术与应用-微课视频版》
ISBN:978-7-302-53843-1
肖政宏李俊杰谢志明编著
定价:49.80元

Spark算法实例:词频统计
文章图片
04
精彩文章回顾
Java15新增类Record的工作实例|附代码
Dart应用Bloc设计模式实例|附代码
从火种到能源 , 华为做AI的逻辑链
华为AI , 建造中的全景图
逻辑回归的MATLAB实践|附代码
Python爬虫实例:采集微博博文|附视频
【Spark算法实例:词频统计】MySQL利用E-R模型的数据库概念设计|附视频
HTML5实现黑白棋游戏附代码利用微信小程序实现活动报名登记|附代码使用Flutter小部件跨平台开发移动端App组件|附代码电脑病毒木马的清除和防范方法|附视频教你用Python做在线人脸检测