Spark: как применить фильтр только к части набора данных?

#apache-spark

#apache-spark

Вопрос:

У меня есть dataset следующее :

 name | gender | age |
Kirito | Male | 17 |
Eugeo | Male | 15  |
Asuna | Female | 16 |
Alice | Female | 15 |
  

В отфильтрованном результате я хочу, чтобы (все мужчины) объединялись (все женщины, возраст которых младше 16 лет) (поэтому должны быть только возвращаемые строки Kirito, Eugeo and Alice ), как я могу выполнить этот фильтр?

Комментарии:

1. Как насчет первой попытки — в качестве технического руководителя?

Ответ №1:

Попробуйте это

 dataset.filter((dataset.gender=='Male') | ((dataset.gender=='Female') amp; (dataset.age<16)).show()
  

Комментарии:

1. Привет, да, это сработает. Но я хочу знать, есть ли лучшие способы, потому что в других сценариях я не могу просто сказать (dataset.gender==’Male’), потому что «пол» будет иметь много значений.

2. Привет @TechLead В случае, если есть длинный список, вы можете попробовать функцию isin (список).