Как получить конкретное поле val в объединенном RDD в spark scala? - PullRequest
0 голосов
/ 26 мая 2020

census (Id: String, Emptype: String, Salary: Int) yieldtax (EMptype: String, Slab: Int)

После объединения этих двух RDD. Как отфильтровать значения, в которых зарплата больше 50 000 вместе с другими полями в объединенной таблице? (В искре scala)

1 Ответ

0 голосов
/ 26 мая 2020

Используйте filter или where для фильтрации данных из DataFrame. Проверьте код ниже.

scala> case class Census(id:String, emptype:String, salary:Int)
defined class Census

scala> case class Incometax(emptype:String,slab:Int)
defined class Incometax

scala> val censusDF = Seq(Census("1","a",10000),Census("2","b",20000),Census("3","c",60000)).toDF
censusDF: org.apache.spark.sql.DataFrame = [id: string, emptype: string ... 1 more field]

scala> val incometaxDF = Seq(Incometax("a",10),Incometax("b",15),Incometax("c",20)).toDF
incometaxDF: org.apache.spark.sql.DataFrame = [emptype: string, slab: int]

scala> censusDF.join(incometaxDF,Seq("emptype"),"left").filter(censusDF("salary") > 50000).show(false)
+-------+---+------+----+
|emptype|id |salary|slab|
+-------+---+------+----+
|c      |3  |60000 |20  |
+-------+---+------+----+

scala> censusDF.join(incometaxDF,Seq("emptype"),"left").where(censusDF("salary") > 50000).show(false)
+-------+---+------+----+
|emptype|id |salary|slab|
+-------+---+------+----+
|c      |3  |60000 |20  |
+-------+---+------+----+
...