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追踪器会是一个更好的地方。