我正在使用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对中,所以我不能在这里执行连接,如何在这里获得具有相同结构的k-v对?
答案 0 :(得分:0)
您需要在每个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)