Cor*_* Wu 6 scala apache-spark
我有一个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"))
Run Code Online (Sandbox Code Playgroud)
还有这个:
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)
Run Code Online (Sandbox Code Playgroud)
在哪mapRDD
一个类型RDD[Map[String, String]]
,在一个通行证.
我假设你的意思是你想为每个值返回单独的RDD(即不是简单地做person => Set("NY", "OR", "MA", "WA").contains(person("state"))
)
在您的第一个示例中,您可以使用:
val keyByState = mapRDD.keyBy(_("state"))
Run Code Online (Sandbox Code Playgroud)
然后执行groupByKey,reduceByKey等操作.
或者在你的第二个例子中,按工资向下舍入到最接近的10.
归档时间: |
|
查看次数: |
4946 次 |
最近记录: |