У меня есть RDD Map[String, String]
; есть способ вызвать filter
его несколько раз, не проходя через RDD более одного раза?Spark - Несколько фильтров на 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]]
, в один проход.
Работа с распределенными коллекциями требует изменения ментальной модели. Вероятно, вам не нужно делать такие отфильтрованные выделения. Подумайте об альтернативах, группируя вещи. – maasg