如何将scala中的地图/列表解压缩为元组以实现可变函数?

布朗

我正在尝试在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上面的可迭代方法,将Map转换为tuple2呢?

罗汉·阿莱蒂(Rohan Aletty)

您实际上可以运行:

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

请注意,使用身份功能复制flattenRDD上的功能,并且该reduceByKey()功能具有简洁的下划线表示法,以简化操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章