gpt4 book ai didi

scala - Spark - 一次通过 RDD 上的多个过滤器

转载 作者:行者123 更新时间:2023-12-04 14:43:04 25 4
gpt4 key购买 nike

我的 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)

在哪里 mapRDDRDD[Map[String, String]] 类型,一次通过。

最佳答案

如果您最终需要将它们放在单独的 RDD 中,则在某些时候需要单独的过滤器和多次扫描。您应该缓存您正在遍历的 RDD(第一个示例中的 mapRDD),以防止它被多次读取。

在编写过滤器时执行过滤器与在另一个答案中建议的分组相比有一个优势,因为过滤器可以发生在 map 端,而分组后过滤需要对所有数据进行混洗(包括与您不需要的状态相关的数据...)

关于scala - Spark - 一次通过 RDD 上的多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com