Передайте фильтры в качестве параметра в функцию Dataframe.filter - PullRequest
0 голосов
/ 15 октября 2018

У меня есть датафрейм userdf как

val userdf = sparkSession.read.json(sparkContext.parallelize(Array("""[{"id" : 1,"name" : "user1"},{"id" : 2,"name" : "user2"}]""")))

scala> userdf.show
+---+-----+
| id| name|
+---+-----+
|  1|user1|
|  2|user2|
+---+-----+

Я хочу получить пользователя с id === 1, и того же я могу добиться с помощью кода, подобного

scala> userdf.filter($"id"===1).show
+---+-----+
| id| name|
+---+-----+
|  1|user1|
+---+-----+

То, что я хочу достичь, похоже на

val filter1 = $"id"===1
userdf.filter(filter1).show

Эти фильтры извлекаются из файлов конфигурации, и я пытаюсь выполнить более сложный запрос, используя этот строительный блок, что-то вроде

userdf.filter(filter1 OR filter2).filter(filter3).show 

где filter1, filter2, filter3, AND и OR условие извлекаются из конфигураций

Спасибо

1 Ответ

0 голосов
/ 15 октября 2018

метод filter также может принимать строку, являющуюся выражением sql.
этот код должен давать тот же результат

userdf.filter("id = 1").show

, так что вы можете просто получить эту строку из config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...