我有一个数据框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
条件是从配置中获取的
谢谢
答案 0 :(得分:1)
filter
方法也可以接受一个字符串,它是一个sql表达式。
该代码应产生相同的结果
userdf.filter("id = 1").show
因此您只需从config获取该字符串