【问题标题】:How to form a tuple from a tuple of tuple using scala?如何使用scala从一个元组的元组形成一个元组?
【发布时间】:2014-11-05 06:52:02
【问题描述】:

我的输入是 , 形式为 RDD[((Int,(String,String)),Int)]

((0,(sunny,no)),3)
((0,(sunny,yes)),2)
((0,(overcast,yes)),4)
((0,(rainy,yes)),3)
((0,(rainy,no)),2)

我希望输出为,

(3,2)
(4)
(3,2)

【问题讨论】:

  • 什么是结果类型? RDD[(String, Any)]?
  • 或者RDD[(String, Seq[Int])]
  • 我需要为下一步获取这两个值。我认为该类型不会产生任何 pblm...
  • 你不应该使用元组作为列表。

标签: scala collections apache-spark


【解决方案1】:

您可以执行以下操作:

val data: RDD[((Int,(String,String)),Int)] = ???

val treated = data.groupBy(_._1._2._1).map(_._2.map(_._2))

这将为您提供所需格式的RDD[(String, Iterable[Int])]

【讨论】:

  • BUt 如果我们使用groupBY,如果大数据来了,就不行或者系统卡住了
  • @rosy,如果您想按照您的问题将所有“阳光充足”的项目组合在一起,您别无选择,只能阅读所有输入。这个答案确实收集了每一行的所有数据,但这并不多。如果您想要一个最小版本,请将每个项目转换为仅阳光/阴天/雨和最后一个值,然后 groupBy - 但您仍将为数据中的每个项目存储一些内容,因为这是您的问题所固有的。
  • 我很确定 Spark 可以有效地实现groupBy。这只是一个洗牌。
  • ys....groupBy 在 spark 中是有效的,但是如果我们提供 1GB 或 2GB 数据,它就会卡住....我对此很确定........
猜你喜欢
  • 2021-08-02
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
相关资源
最近更新 更多