在groupByKey输出后对键进行排序需要帮助:
val skuRDD2:RDD[(String,Iterable[(String,imageinfo2))]= DF.select("ID", "TAG","MEDIA_ID","IMAGE_NAME","PATH").rdd
.map(r => (r .getString(0),( r.getString(1),ImageInfo2(r.getString(2),r.getString(3),r.getString(4)))) )
.groupByKey()
我想对TAG进行排序,即。在上面的groupByKey输出中键入Iterable [(String,imageinfo2))。
输入(在groupByKey输出之上) -
(skuid,Map(largeImage_4 -> [Media/Device Images/Large Images/Huawei Images Large/GR5GRY-4,m110005,GR5GRY-4], largeImage_1 -> [Media/Device Images/Large Images/Huawei Images Large/GR5GRY-1,m110002,GR5GRY-1])
预期产出 -
(skuid,Map(largeImage_1 -> [Media/Device Images/Large Images/Huawei Images Large/GR5GRY-1,m110002,GR5GRY-1], largeImage_4 -> [Media/Device Images/Large Images/Huawei Images Large/GR5GRY-4,m110005,GR5GRY-4])
有人可以帮助我。
谢谢,
答案 0 :(得分:2)
分析您提供的数据让我得出结论,您所缺少的只是简单的mapValues
功能,您可以在其中执行排序。
.mapValues(x => x.toList.sortBy(y => y._1))
所以你的代码应该是
val skuRDD2:RDD[(String,Iterable[(String,ImageInfo2)])] = DF.select("ID", "TAG","MEDIA_ID","IMAGE_NAME","PATH").rdd
.map(r => (r .getString(0),( r.getString(1),ImageInfo2(r.getString(2),r.getString(3),r.getString(4)))) )
.groupByKey().mapValues(x => x.toList.sortBy(y => y._1))
我希望答案很有帮助