排除版本问题:1.2.0版本以上有该方法
排除import出错问题:按照其他网友的说法引入了
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
依然没有解决
最终找到问题:
我要处理的rdd根本就不是一个map,根本没有key,当然用不上reduceByKey了。。。
原代码
val mapRDD = importdata.map { s => {
val t = s.split(" ")
(t(1), t(4), 1)
}
}
val reduceRDD: RDD[((String, String), Int)] = mapRDD.reduceByKey(_ + _)
修改后代码:
val mapRDD = importdata.map { s => {
val t = s.split(" ")
((t(1), t(4)), 1)
}
}
val reduceRDD: RDD[((String, String), Int)] = mapRDD.reduceByKey(_ + _)
如上,只是添加了一对括号而已,在没有括号之前是完全不报错的。
感觉还是java简单好用些,出了问题一眼看得见,scala灵活性太高了。。。。***