【问题标题】:Sorting elements inside nested list in an RDD (Scala/Spark)在 RDD (Scala/Spark) 中对嵌套列表中的元素进行排序
【发布时间】:2021-07-13 02:36:04
【问题描述】:

我正在尝试对 RDD 对象的每个嵌套列表中的元素进行排序,如下所示:

org.apache.spark.rdd.RDD[(Long, List[List[String]])]

未排序的示例:

(342, List(List([banana], [apple]), List([orange], [lemon])))
(342, List(List([coconut], [carrot]), List([watermelon], [kiwi])))
(794, List(List([strawberry], [carrot]), List([lemon], [orange])))

并希望输出是这样的(嵌套列表的内容按字母降序排序):

(342, List(List([apple], [banana]), List([lemon], [orange])))
(342, List(List([carrot], [coconut]), List([kiwi], [watermelon])))
(794, List(List([orange], [strawberry]), List([carrot], [lemon])))

【问题讨论】:

  • 你试过什么?
  • 最初的想法是“爆炸”/反转类似于 groupByKey 的结构,所以我的 rdd 中有 6 个元素并且没有嵌套列表(而不是 3 个嵌套)看起来有点像这样(342 ,列表([香蕉],[苹果]))。然后我可以对元组中的每个列表进行排序。发现另一个帖子尝试了类似的方法,但无法使其正常工作 (stackoverflow.com/questions/56742432/…)
  • 解决了@sinanspd,并添加了问题的解决方案。无论如何,谢谢。
  • 你能发布答案吗
  • @Rajasekhar 现在发布了一个答案。抱歉没有看到您的评论。

标签: scala apache-spark sorting rdd


【解决方案1】:

设法通过以下方式解决它(反向组结构和排序非嵌套列表(请注意,RDD 结构已更改 - 在这种情况下无关紧要)。

data.flatMap(x => x._2.map(i => (x._1, i))).mapValues(x => x.sorted)

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 2014-07-12
    • 2021-06-04
    • 2015-08-23
    • 2017-02-08
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多