如何将scala中的map / list解压缩为可变函数的元组?

时间:2015-11-13 16:01:41

标签: scala apache-spark

我试图在火花中创建一个PairRDD。为此我需要一个tuple2 RDD,比如RDD[(String, String)]。但是,我有RDD[Map[String, String]]

我无法弄清楚如何摆脱迭代,所以我只是离开了RDD[(String, String)],而不是RDD[List[(String, String)]]

我尝试工作的一个简单演示就是这个破碎的代码:

val lines = sparkContext.textFile("data.txt")
val pairs = lines.map(s => Map(s -> 1))
val counts = pairs.reduceByKey((a, b) => a + b)

最后一行不起作用,因为当pairs需要RDD[Map[String, Int]]RDD[(String, Int)]pairs

那么如何摆脱上面npm run tsc中的迭代,将Map转换为元组2?

1 个答案:

答案 0 :(得分:2)

你实际上可以运行:

val counts = pairs.flatMap(identity).reduceByKey(_ + _)

请注意,在RDD和flatten函数上复制reduceByKey()功能的标识函数的使用有一个简洁的下划线表示法。