在这种情况下如何获得 k-v 对?

How can I get a k-v pair in this case?

我正在使用 spark 来处理一些数据: 现在我有:

val firstRdd = datas.map(data =>
  if (data.Type == 1) (data.id, data))
val secondRdd = datas.map(data =>
  if (data.Type == 2) (data.parentId, data))

然后我想加入firstRdd和secondRdd,但是我发现他们不是k-v对,所以我不能在这里执行join,我怎么在这里得到一个相同结构的k-v对?

您需要在每个 RDD 中过滤您想要的那些行,然后创建对 rdd

val firstRdd = datas.filter(_.Type == 1).map(data =>
  (data.id, data))
val secondRdd = datas.filter(_.Type == 2).flatMap(data =>
  data.parentId.map(parentId => (parentId, data)))
firstRdd.join(secondRdd)