【发布时间】:2019-03-18 05:55:02
【问题描述】:
val test_rated = pearson.flatMap(x => {
val bid1 = x._1._1.toInt
val bid2 = x._1._2.toInt
val sim = x._2.toDouble
val pairs = for (tu <- test_users) yield {
val tid = tu.toInt
if (test_map.contains((tid, bid2)) && train_map.contains((tid, bid1))){
((tid, bid2), (bid1, sim))
}
}
pairs
}).filter(row => row!= ())
在这个代码块中 test_users 是一个 scala list。在flatMap 操作后,我能够得到结果并用foreach 打印它。
但是,如果我想再次映射它
test_rated.map(x => x._2)
我无法使用 x._2 访问每个单独的元组值
【问题讨论】:
-
能否提供
pearson, test_users, test_map and train_map的样本数据? -
pearson是一个 rdd,每一行都为((bid1, bid2), sim)test_users是一个 scala 一维列表 test_map 和 train_map 在这种情况下应该无关紧要,因为它只用于条件语句
标签: scala apache-spark tuples yield flatmap