今天就跟大家聊聊有关spark01 - scala的字数的过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
第一版:原始版本
defmain(args :数组[String]):单位={ 0
valconf=newSparkConf()
conf.setAppName('workcount ')
conf.setMaster(')本地)
//SparkContext是通往发动集群的唯一通道
valsc=Newark context(conf)
/**加载配置当前项目下话文件的内容
*内容为:
hellojava
地狱方舟
hellohdfs
hellomr
hellojava
地狱方舟
*/
vallines=sc.textFile(' ./字数)
//行为每一行,每一行经过''空格切分成当纳利类型
vallist 3360 rdd[String]=line。平面图(直线={直线。拆分(')})
//单词转换成二元元组
valvalues:RDD[(String,Int)]=list。map(word={新元组2(word,1)})
/**
*reduceByKey函数是先把相同的单词(键)进行分组,如
hello1
hello1
hello1
hello1
hello1
hello1
java1
java1
迷你图一
迷你图一
hdfs1
mr1
(v1:Int,v2:Int)={v1 v2}表示经过分组后的单词元组(Sring,Int),相同键的价值进行累加,返回v1 v2就是累加的值
*/
valresult:RDD[(String,Int)]=值。按键减少((v 1: Int,v2:Int)={v1 v2})
//遍历结果
result.foreach(println)
//关闭
sc.stop()
}第二版:
defmain(args :数组[String]):单位={ 0
valconf=newSparkConf()
conf.setAppName('workcount ')
conf.setMaster(')本地)
valsc=Newark context(conf)
valresult=sc.textFile(' ./words ').flatMap(line=line.split(')).地图(世界=新地图2(世界,1))。reduceByKey((v1:Int,v2:Int)={v1 v2})
result.foreach(println)
sc.stop()
}第三版本:最简版本
defmain(args :数组[String]):单位={ 0
valconf=newSparkConf()
conf.setAppName('workcount ')
conf.setMaster(')本地)
valsc=Newark context(conf)
valresult=sc.textFile(' ./words ').flatMap(_ .拆分("")。map((_,1)).reduceByKey(_ _)
result.foreach(println)
sc.stop()
}简化后解释:
xxx.flatMap(line=line.split('))中参数线条只在=后面使用一次,可以用'_' 符号来表示该参数,xxx.flatMap(_ .拆分("")
xxx.map(world=new Tuple2(world,1))中世界参数也是在=后只使用一次,可以使用'_'来表示,元组可以省略新的,也可以省略图普勒2,XXX。map(_,1))
xxx.reduceByKey((v1:Int,v2:Int)={v1 v2})中v1、v2也是在=后只使用一次,均可以使用'_'来表示,xxx.reduceByKey((_ _)
看完上述内容,你们对spark01 - scala的字数的过程是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/36011.html