我在Java eclipse上使用spark-core_2.10 jar。我找不到任何reduceBykey方法!我得到reduce
的所有建议都是reduce
和treeReduce
。知道这里有什么问题吗?
答案 0 :(得分:2)
在Java中,PairRDD
更加麻烦(与Scala相比,其中类型是自动推断的,或者Python不考虑类型而在运行时期望元组)。由于reduceByKey
需要知道密钥,因此它是defined on JavaPairRDD
类。
您可以通过致电JavaRDD#mapToPair
从正常 JavaPairRDD
获取RDD
。您提供的PairFunction
返回元组,其中第一个元素作为结果JavaPairRDD
中的键。
答案 1 :(得分:2)
reduceByKey
仅适用于存在类似键值的RDD,它们被称为pairRDD。
添加上面的答案,只要您的数据集正确,您是否使用Scala of Java就无所谓了。
ReduceByKey
将以下列方式处理元组数据。
val l1 = List((1,2), (1,3), (4,2))
val l1RDD = sc.parallelize(l1)
l1RDD.reduceByKey(_+_)
输出是: (1,5) (4,2)
答案 2 :(得分:0)
发布代码并且您的RDD详细信息reduceByKey
是PairRDD的一部分。如果您创建了PairRDD,那么您可以看到reduceByKey
。