scala – Spark – 一次通过RDD上的多个过滤器
发布时间:2020-12-16 18:57:21 所属栏目:安全 来源:网络整理
导读:我有一个RDD的Map [String,String];有没有办法多次调用过滤它而不经过RDD多次? 例如,我想做这样的事情: val stateNY = mapRDD.filter(person = person("state").equals("NY"))val stateOR = mapRDD.filter(person = person("state").equals("OR"))val stat
我有一个RDD的Map [String,String];有没有办法多次调用过滤它而不经过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]],一次传递. 解决方法
我假设你的意思是你想为每个值返回单独的RDD(即不是简单地做人=> Set(“NY”,“OR”,“MA”,“WA”).contains(person(“state”)) )
通常,使用Pair RDDs可以实现您想要实现的目标 在您的第一个示例中,您可以使用: val keyByState = mapRDD.keyBy(_("state")) 然后执行groupByKey,reduceByKey等操作. 或者在你的第二个例子中,按工资向下舍入到最接近的10. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SAP调用webservice 参数为空
- Docker for Java Developers
- angularjs – 当使用angular-ui的ui-date datepicker时,Ang
- WebService生成XML文档时出错。不应是类型XXXX。使用XmlInc
- angular-ui-router – Angular UI Router – 允许任何查询字
- 如何在bash中简单计算两个变量的最小值?
- angularjs – 如何获取多个选中的复选框值
- WebService安全处理办法之一
- bash – 在docker entrypoint脚本中使用exec的目的是什么?
- Vim Surround在单词周围插入额外的空格