我的csv文件中有如下数据
键1,a1、10,a2、20,a3、30
键2,b1、50,b2、60
创建一个RDD并转换成另一个RDD,其中o / p应该如下所示
Key-1,a1
键1,a2
Key-1,a3
Key-2,b1
Key-2,b2
答案 0 :(得分:1)
请根据上述示例找到以下代码。
val rdd = sc.textFile("path to the csv file") // here sc is sparkContext
val rdd1 = rdd.mapPartitions(itr => {
itr.map(_.split(",")).map(_.toList).map(list => (list.head, list.tail))
})
val rdd2 = rdd1.mapValues(tail => tail.zipWithIndex).map(tuple => (tuple._1,
tuple._2.filter(x => x._2 % 2 ==0).map(_._1)))
val rdd3 = rdd2.mapPartitions(itr => {
itr.flatMap(xx => xx._2.map(k => (xx._1, k)))
})
rdd3.foreach(println)
(Key-2, b1)
(Key-2, b2)
(Key-1, a1)
(Key-1, a2)
(Key-1, a3)