【发布时间】:2019-03-11 09:47:19
【问题描述】:
我想使用列表映射来传播 rdd。
输入样本是
Log("key1", "key2", "key3", Map(tk1 -> tv1, tk2 -> tv2, tk3 -> tv3))
我想要的输出样本是
RDD[(String, String, String, String, String)]
("key1", "key2", "key3", "tk1", "tv1")
("key1", "key2", "key3", "tk2", "tv2")
("key1", "key2", "key3", "tk3", "tv3")
最后,我想做如下图的reduce操作。 但它不起作用。
val mapCnt = logs.map(log => {
log.textMap.foreach { tmap =>
var tkey = tmap._1
var tvalue = tmap._2
}
((log.key1, log.key2, log.key3, tkey, tvalue), 1L)
}).reduceByKey(_ + _)
这是我使用的输入对象。
case class Log(
val key1: String,
val key2: String,
val key3: String,
val TextMap: Map[String, String]
)
我该如何转换它?
感谢您的帮助。
【问题讨论】:
标签: scala apache-spark foreach rdd