如何将String转换为spark.sql.Column以进行查询?

时间:2019-03-06 15:43:12

标签: apache-spark dataframe

这种情况是我想让用户能够从数据框中过滤出数据。在程序上我可以做得很好,像这样。

val filter = col("SomeColA") > 0.1 && col("SomeColB") > 0.2

val queriedData = sqlContext.read.format("csv").
 option("header", "true").
 option("delimiter", "\t").option("inferSchema","true").
 load(filePath).where(filter)

但是,我希望用户在此提供过滤器本身,例如使用一个文本框。换句话说,我希望能够将字符串转换为其等值spark.sql.Column的值。例如,我希望用户能够在此处以字符串形式指定$"SomeCol" > 0.1。我该怎么办?

1 个答案:

答案 0 :(得分:2)

一个人可以简单地使用将条件表达式作为字符串的where版本,即.where("SomeCol > 0.1")。参见https://spark.apache.org/docs/2.4.0/api/java/org/apache/spark/sql/Dataset.html#where-java.lang.String-