Scala 将RDD解析为键值对
我的csv文件中有如下数据 图例1、a1、10、a2、20、a3、30 键2,b1,50,b2,60 创建一个RDD并转换为另一个RDD,其中o/p应如下所示 键-1,a1 键-1,a2 钥匙-1,a3 键2,b1Scala 将RDD解析为键值对,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我的csv文件中有如下数据 图例1、a1、10、a2、20、a3、30 键2,b1,50,b2,60 创建一个RDD并转换为另一个RDD,其中o/p应如下所示 键-1,a1 键-1,a2 钥匙-1,a3 键2,b1 键2,b2请根据上述示例查找以下代码 val rdd = sc.textFile("path to the csv file") // here sc is sparkContext val rdd1 = rdd.mapPartitions(itr => { itr
键2,b2请根据上述示例查找以下代码
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)