这种情况是我想让用户能够从数据框中过滤出数据。在程序上我可以做得很好,像这样。
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
。我该怎么办?
答案 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-