【发布时间】:2016-08-09 08:38:23
【问题描述】:
我有以下地图:
val pairs = lines.map( l => ( if (l.split(",")(1).toInt < 60) { "rest" } else if (l.split(",")(1).toInt > 110) { "sport" }, 10) ).reduceByKeyAndWindow((a:Int, b:Int) => (a+b), Seconds(12))
基本上,当某人的 HR 低于 60 时,它被归类为休息,超过 110 被归类为运动。元组的第二个变量表示这个人已经做了 10 分钟。
现在,这将为 60 到 110 之间的值映射一个空键。我想要的是完全丢弃它们。这如何实现?
所以从
("rest", 30)
("sport", 120)
((),10)
我正在尝试过滤掉((),10)。
我试过了
pairs.filter{case (key, value) => key.length < 3} //error: value length is not a member of Any
pairs.filter(_._1 != "") //no error, just still keeps the empty keys, too
似乎没有一个工作。
【问题讨论】:
-
Flatmap 是你的朋友。
-
您能详细说明一下吗? :)
-
抱歉,我正在接电话。在此处搜索 spark Scala 平面图。这个之前已经讨论过了。
标签: scala apache-spark