说明:
* 1.map使用高级函数时,注意map的元素类型为二元元组 tp:(dataType,dataType)
* 2.map没有排序函数,如果要排序,必须先转成list
*
* */
/*
* 说明:
* 1.map使用高级函数时,注意map的元素类型为二元元组 tp:(dataType,dataType)
* 2.map没有排序函数,如果要排序,必须先转成list
*
* */
object MapReduce extends App {
//1. 准备数据
val txtList = List("Hello Scala Hbase kafka"
, "Hello Scala Hbase"
, "Hello Scala"
, "Hello")
//2. 切分数据 - map
def splitRule(e: String) = {
e.split(" ")
}
var list1: Seq[Array[String]] = txtList.map(_.split(" "))
println(list1)
//3. 将数据拉平 - flatten
var list2: Seq[String] = list1.flatten
println(list2)
//4. 切分 + 拉平 - flatMap
var list3: List[String] = txtList.flatMap(splitRule)
println(list3)
//5. 分组 - group
var list4: Map[String, List[String]] = list3.groupBy(word => word)
println(list4)
//6. 计数
def countRule(kv: (String, List[String])) = {
(kv._1, kv._2.length)
}
var list5: Map[String, Int] = list4.map(countRule _)
var list6: Map[String, Int] = list4.map(kv => (kv._1, kv._2.length))
println(list5)
println(list6)
//7. 排序
var list7 = list6.toList.sortBy(_._2).reverse.take(3)
println(list7)
}