介绍
今天就跟大家聊聊有关spark01, scala的wordcount的过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
第一版:原始版本
def 主要(args:数组[String]):, Unit =, { ,,,val conf =, new SparkConf () ,,,conf.setAppName (“workcount") ,,,conf.setMaster (“local") ,,,//SparkContext 是通往spark 集群的唯一通道 ,,,val sc =, new SparkContext(配置) ,,,/* *,加载配置当前项目下词文件的内容 ,,,,,*,内容为: ,,,,,,,hello java ,,,,,,,hello 火花 ,,,,,,,hello hdfs ,,,,,,,hello ,先生 ,,,,,,,hello java ,,,,,,,hello 火花 ,,,,*/,,,val lines =, sc.textFile (“。/words") ,,,//线为每一行,每一行经过“,“空格切分成RRD类型 ,,,val 列表:,抽样(字符串),=,lines.flatMap (line =祝辞,{line.split (“,“)}) ,,,//单词转换成二元元组 ,,,val 价值观:,抽样[(字符串,Int)],=, lists.map(词=祝辞{new Tuple2(单词,1)}) ,,,/* * ,,,,,*,reduceByKey 函数是先把相同的单词(关键)进行分组,如 ,,,,,hello 1 ,,,,,hello 1 ,,,,,hello 1 ,,,,,hello 1 ,,,,,hello 1 ,,,,,hello 1 ,,,,,java 1 ,,,,,java 1 ,,,,,spark 1 ,,,,,spark 1 ,,,,,hdfs 1 ,,,,,mr 1 ,,,,,(v1: Int,, v2: Int)=祝辞{v1 + v2},表示经过分组后的单词元组(sr, Int)相同的关键,值进行累加,返回v1 + v2 就是累加的值 ,,,,*/,,,val 结果:,抽样[(字符串,Int)],=, values.reduceByKey ((v1: Int,, v2: Int)=祝辞{v1 + v2}) ,,,//遍历结果 ,,,result.foreach println () ,,,//关闭 ,,,sc.stop () 以前,,}>第二版:
<>之前,def 主要(args:数组[String]):, Unit =, { ,,,val conf =, new SparkConf () ,,,conf.setAppName (“workcount") ,,,conf.setMaster (“local") ,,,val sc =, new SparkContext(配置) ,,,val result =, sc.textFile (“。/words") .flatMap(线=祝辞line.split (“,“)) . map(世界=祝辞new Tuple2(世界,1).reduceByKey ((v1: Int,, v2: Int)=祝辞{v1 + v2}) ,,,result.foreach println () ,,,sc.stop () 以前,,}>第三版本:最简版本
<>之前,,def 主要(args:数组[String]):, Unit =, { ,,,val conf =, new SparkConf () ,,,conf.setAppName (“workcount") ,,,conf.setMaster (“local") ,,,val sc =, new SparkContext(配置) ,,,val result =, sc.textFile (“。/words") .flatMap (_.split (“,“)) . map ((_), 1) .reduceByKey (_ + _) ,,,result.foreach println () ,,,sc.stop () 以前,,}><强>简化后解释:强>
xxx.flatMap(线=祝辞line.split (““))中参数线只在=祝辞后面使用一次,可以用“_"符号来表示该参数,xxx.flatMap (_.split (““))
xxx.map(世界=祝辞;新的Tuple2(世界,1))中世界参数也是在=祝辞后只使用一次,可以使用“_"来表示,元组可以省略新的,也可以省略Tuple2, xxx.map ((_, - 1))
xxx。reduceByKey ((“v1: Int v2: Int)=祝辞{v1 + v2})中v1、v2也是在=祝辞后只使用一次,均可以使用“_"来表示,xxx.reduceByKey ((_ + _)
看完上述内容,你们对spark01, scala的wordcount的过程是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
spark01, scala的wordcount的过程是怎样的