动态构建Spark SQL查询

时间:2018-02-25 07:25:02

标签: scala apache-spark apache-spark-sql

我们如何使用Scala中的Spark动态地将列名和操作符名称传递给SQL查询?

我尝试了(未成功)以下内容:

spark.sql("set key_tbl=mytable")
spark.sql("select count(1) from ${key_tbl}").collect()

2 个答案:

答案 0 :(得分:4)

更简单地说,您应该能够执行以下操作:

val key_tbl = "mytable"
spark.sql(s"select count(1) from ${key_tbl}").collect()

注意查询字符串前面的s:这使用Scala的字符串插值来构建具有另一个变量(key_tbl)的查询。

您可以在Scala here中阅读有关字符串插值的更多信息。

答案 1 :(得分:1)

i done  with this ,as following:

val tablename="yourtablename"
val columnname="name"
val value=""
val operator="=="
spark.sql("select * from"+ tablename+"where"+name+operator+value)