Spark scala flatmapvalues

时间:2018-03-06 10:07:36

标签: scala apache-spark

在Spark-shell中执行少量转换后,我得到了如下输出。我是从REPL复制并粘贴的。

阶> s.collect res44:Array [(String,String)] = Array((45000,Pavan,Amit),(50000,Bhupesh,Tejas,Dinesh)

现在我需要为每个ID生成单独的文件,ID包含在文件名中,如下所示

s.foreach{case(k,v) => flatMapValues(x=>x.split(",")).saveAsTextFile("ID"+k+".txt")}

尝试下面的代码,但没有工作

PreparedStatement

专家能否帮助我。

1 个答案:

答案 0 :(得分:0)

鉴于您的s rdd

Array[(String, String)] = Array((45000,Pavan,Amit), (50000,Bhupesh,Tejas,Dinesh)

执行以下操作应该有效(尽管不是有效的解决方案)。

val groupedRDD = s.flatMap{case(k, v)=> v.split(",").map(x => (k, x))}.groupByKey()

val keySetToCheck = groupedRDD.collect().toMap.keySet
for(key <- keySetToCheck){
  groupedRDD.filter(x => x._1 == key).saveAsTextFile("ID"+key+".txt")
}

我希望答案很有帮助