Среда
Spark 2.4.5 с Scala
Проблема
У меня есть две таблицы:
пользователь таблицы
- столбец user_id: идентификатор пользователя
- столбец user_name: имя пользователя
условие таблицы
- столбец condition_id: идентификатор этого condition
- column expr: строка, которая при передаче в качестве аргумента
user_df.filter()
(_df
означает, что это DataFrame
) выберет тех пользователей, для которых выражение оценивается как истинное. Пример этого столбца: "user_id == 1 or user_id == 2"
то, что я хочу: (псевдокод)
-- variable for the final result, initialized as an empty list
-- has type `list of user` (not `list of (list of user)`)
final_users = []
for each cond in table condition:
expr = cond.expr -- now variable expr is a string
-- an example: (note that a string literal is passed to the function filter)
-- partial_users = user_df.filter("user_id == 1 or user_id == 2")
partial_users = user_df.filter(expr)
partial_users.withColumn("condition_id", cond.condition_id) -- add a new column
final_users.extend(partial_users)
Как мне реализовать это в Spark (Scala)? (лучше без UDF)