运维开发网

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

运维开发网 https://www.qedev.com 2020-07-14 12:08 出处:网络 作者:运维开发网整理
我需要在 Scala中使用我自己的类作为键/值对中的键.特别是,我有一个简单的类,它包含两个变量id1和id2,我希望元素只基于id2而不是id1进行分组.我在网上找不到有关如何以及在何处覆盖reduceByKey()方法的比较方法的信息,以便它可以根据我的自定义compare()方法对具有相同键的元素进行分组. 任何帮助表示赞赏. 谢谢. 您无法覆盖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)]
0

精彩评论

暂无评论...
验证码 换一张
取 消