用SparkCore统计变位词
接触了Spark之后,确实是不想再碰mapreduce了,用scala编程实在是太舒爽了,这里介绍一下如何用SparkCore统计变位词
- 什么是变位词
- 编程思路
- 代码块
什么是变位词
由相同长度并且组成字母相同但排位顺序不同的单词叫作变位词
如:steal和stale
编程思路
将每一个单词拆分成字母的数组,在数组内顺序排序,然后将排序后的字母组合成新的单词,最后返回二元组,组合后的新单词作为key,原单词作为value, 根据key值分组
代码块
代码块语法遵循标准markdown代码,例如:
def main(args: Array[String]) {
val conf = new SparkConf()
.setAppName("test1")
.setMaster("local[2]")
val sc =SparkContext.getOrCreate(conf)
sc.setLogLevel("WARN")
val localRdd=sc.textFile("file:///d://dict.txt")
//将文件拆分成单词的集合
val wordRdd = localRdd.flatMap(line => line.split("\\s+")).map(word => {
//将每个单词拆分成字母组成的数组
val list = word.toCharArray
//将字母组成的数组根据字母排序后组合成字符串,作为key值
val newWord=list.toBuffer.sorted.mkString("")
//返回元组 key=原单词重组后的字符串 value=原单词
(newWord,word)
})
wordRdd.groupByKey().foreach(println)
}