我试图在火花中创建一个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?
答案 0 :(得分:2)
你实际上可以运行:
val counts = pairs.flatMap(identity).reduceByKey(_ + _)
请注意,在RDD和flatten
函数上复制reduceByKey()
功能的标识函数的使用有一个简洁的下划线表示法。