将distinct键转换为spark中的列

时间:2018-04-06 14:21:37

标签: scala apache-spark

我想将键值RDD转换为其中distinct键应该是列的列,例如

我的RDD是这样的: -

(serviceName,service1)
(startTime,1234)
(endTime,2345)
(serviceName,service2)
(startTime,4567)
(endTime,7891)

结果应该像

serviceName|startTime|endTime
-----------|---------|---------
service1   |1234     |2345
service2   |4567     |7891

任何人都可以使用scala帮助实现这一点。

1 个答案:

答案 0 :(得分:0)

让我们假设您的RDD类似于RDD [(K,V)]。还假设您从文件中读取,因此您的RDD将始终按此顺序排序。您可以使用以下代码定期获取行:

rdd.zipWithIndex.filter(_._2==0).map(_._1._2) // then replace 0 with 1, 2

输出将是3个RDD,没有键(列的名称),但您可以使用以下命令找到它们:

rdd.zipWithIndex.filter(_._2==0).map(_._1._1).first() // then replace 0 with 1, 2