Scala 为什么spark&x27中没有reduceBykey;s数据集

Scala 为什么spark&x27中没有reduceBykey;s数据集,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,在这里,大多数答案都介绍了groupByKey+reducegroup策略。但是,我没有找到关于spark为什么删除reduceByKeyAPI的评论。有评论说Sparks的Catalyst Optimizer可以降低一些计算,这也许可以解释为什么。然而,根据作者和我的测试,数据集的groupByKey+reducegroup策略比reduceByKey慢得多 那么为什么要删除reduceByKey,我如何才能找到替代方法呢?该答案中的注释表明,自Spark 2.1.0以来,数据集上的group

在这里,大多数答案都介绍了
groupByKey
+
reducegroup
策略。但是,我没有找到关于spark为什么删除
reduceByKey
API的评论。有评论说Sparks的Catalyst Optimizer可以降低一些计算,这也许可以解释为什么。然而,根据作者和我的测试,数据集的
groupByKey
+
reducegroup
策略比
reduceByKey
慢得多


那么为什么要删除
reduceByKey
,我如何才能找到替代方法呢?

该答案中的注释表明,自Spark 2.1.0以来,数据集上的groupByKey后跟ReduceGroup的行为方式与RDD上的reduceByKey操作相同

Spark尚未删除reduceByKey API。要使用reduceByKey,您的数据必须是成对RDD类型。例如,如果您有一个数据集,并且想要尝试使用reduceByKey,则必须执行以下操作:

df
 .map(row => (row.key, row.value))
 .rdd
 .reduceByKey((a,b) => SomeReductionFunction(a,b))
 .values
 .toDF()
注意,第二行将数据集行转换为具有2个“列”(一个键和一个值)的RDD,因为reduceByKey需要一对RDD。
如果您已经有数据集类型,则此方法也不起作用,因为它会将数据集转换为rdd,如果您想继续对数据集执行操作,则会将其转换回数据帧或数据集

你能分享这些测试吗?输入数据呢?我希望它们能以类似的方式实施——无论如何,我怀疑这是提出此类问题的正确地点,唯一能客观地回答这些问题的将是spark贡献者。也许他们的邮件频道或bug追踪器会是一个更好的地方。