【发布时间】:2015-07-07 10:19:35
【问题描述】:
我的 RDD 为 Map[String, String];有没有一种方法可以多次调用filter 而无需多次通过 RDD?
例如,我想做这样的事情:
val stateNY = mapRDD.filter(person => person("state").equals("NY"))
val stateOR = mapRDD.filter(person => person("state").equals("OR"))
val stateMA = mapRDD.filter(person => person("state").equals("MA"))
val stateWA = mapRDD.filter(person => person("state").equals("WA"))
还有这个:
val wage10to20 = mapRDD.filter(person => person("wage").toDouble > 10 && person("wage").toDouble <= 20)
val wage20to30 = mapRDD.filter(person => person("wage").toDouble > 20 && person("wage").toDouble <= 30)
val wage30to40 = mapRDD.filter(person => person("wage").toDouble > 30 && person("wage").toDouble <= 40)
val wage40to50 = mapRDD.filter(person => person("wage").toDouble > 40 && person("wage").toDouble <= 50)
其中mapRDD 的类型为RDD[Map[String, String]],一次通过。
【问题讨论】:
-
使用分布式集合需要改变思维模型。可能您不需要进行此类过滤选择。考虑替代方案,将事物分组。
标签: scala apache-spark