【问题标题】:How to transform a item in RDD(Spark) to many items in RDD?如何将 RDD(Spark) 中的一个项目转换为 RDD 中的多个项目?
【发布时间】:2016-05-20 10:48:34
【问题描述】:

我从“HBase”获得了一个带有“扫描”操作的 RDD。 这个 RDD 中的每一项都是这样的:x1, y1, y2, y3... 所以这个RDD中的项目是这样的(每一行都是扫描动作的一行结果):

  1. x1, y1, y2, y3
  2. x2, y1, y4, y8, y9
  3. x3, y5
  4. ......
  5. xn, y1, y6, y100

我想将此 RDD 转换为另一个 RDD,例如:

  1. x1, y1
  2. x1, y2
  3. x1, y3
  4. x2, y1
  5. x2,y4
  6. ...
  7. xn, y1
  8. xn, y6
  9. xn, y100

如何进行这种转换?

【问题讨论】:

  • 我认为第二项是错字...应该是 x1 而不是 x2
  • 是的,这是一个错字。我修改它。谢谢 ! @JustinPihony

标签: scala apache-spark rdd


【解决方案1】:

"flatMap that sh*t":

rdd.flatMap(x => {
  val key = x.head
  x.tail.map(y=>(key,y))
})

【讨论】:

  • 不,这不是简单地将头部与尾部的每个项目结合起来。如果您观察最后几个示例,则第二项由 f(xn) 计算。
  • @davidshen84 是什么让你这么想?
  • 对不起,第二项是错字。我已经编辑过了。@davidshen84
猜你喜欢
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2015-02-10
相关资源
最近更新 更多