【问题标题】:reduction of RDDs in spark scalaspark scala 中 RDD 的减少
【发布时间】:2016-12-05 17:05:10
【问题描述】:

我有一个 RDD(会话 ID、会话开始时间、会话长度)。我需要通过会话 ID 减少此 RDD,然后生成相应会话开始时间和长度的数组。有人能指点我如何在 scala 中编写代码吗?

所以我需要从 RDD[(session ID , session start-time, session length)] 转换 到 RDD[(session ID , Seq[(session start-time, session length)]) 我该怎么做?

【问题讨论】:

    标签: scala apache-spark reduce


    【解决方案1】:

    也许groupBy 可能会有所帮助(虽然不是很推荐,因为它可能会很慢):

    val a = sc.parallelize(Seq(("a", 0, 0), ("b", 1, 1), ("a", 2, 2)))
    val grouped = a.groupBy{ case(sessionID, startTime, length) => sessionID }
    

    在这种情况下,grouped 将是 RDD[(String, Iterable[(String, Int, Int)]。然后你可以很容易地映射它以获得你想要的格式。

    或者,您可以使用map + groupByKey

    val grouped = a.map { 
      case(sessionID, startTime, length) => (sessionID, (startTime, length)) 
    }.groupByKey
    

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 2021-05-24
      • 1970-01-01
      • 2015-10-31
      • 2021-12-02
      • 2016-11-27
      • 2014-07-12
      • 2014-10-26
      • 2021-03-14
      相关资源
      最近更新 更多