scala – Spark:reduceByKey的自定义键比较方法

前端之家收集整理的这篇文章主要介绍了scala – Spark:reduceByKey的自定义键比较方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在 Scala中使用我自己的类作为键/值对中的键.特别是,我有一个简单的类,它包含两个变量id1和id2,我希望元素只基于id2而不是id1进行分组.我在网上找不到有关如何以及在何处覆盖reduceByKey()方法的比较方法的信息,以便它可以根据我的自定义compare()方法对具有相同键的元素进行分组.

任何帮助表示赞赏.
谢谢.

解决方法

您无法覆盖reduceByKey的比较,因为它无法使用您的数据经常被整个群集上的单独执行程序上的密钥洗牌的事实.您可以更改密钥(并注意,根据您使用的转换/操作,这可能会重新调整数据周围).

在RDD中有一个很棒的方法来做这个叫做keyBy的方法,所以你可以这样做:

val data: RDD[MyClass] = ...    // Same code you have now.
val byId2 = data.keyBy(_.id2)   //Assuming your ids are Longs,will produce a RDD[(Long,MyClass)]

猜你在找的Scala相关文章