原始数据:
输出样式:
现在开始进入正题:此次操作均在Linux虚拟机上面进行,用spark-shell启动,不包含前面的SparkContext的设置
1、 从HDFS中导入文件
var accounts_path = "/loudacre/accounts"
var accounts = sc.textFile(accounts_path)
2、将数据转化为key-value格式,邮编作为key,整行的数据经过分割后的数组作为value
var accounts_key = accounts.map(_.split(',')).keyBy(_(8))
3、使用mapValues()对value进行操作,将value转化为firname,lastname格式,并将key相同的整合到一起
var accounts_name = accounts_key.mapValues(values => values(3)+","+values(4)).groupByKey()
4、循环输出,每一个邮编下面的姓名
for(pair <- accounts_name.sortByKey()){
println("-----"+pair._1)
pair._2.foreach(println)
}
至此就完成了。