我们如何在Scala中使用Spark将列名和操作符名称动态传递给SQL查询?
我尝试了(不成功)以下内容:
spark.sql("set key_tbl=mytable")
spark.sql("select count(1) from ${key_tbl}").collect()发布于 2018-02-25 15:49:42
您可以将其作为参数传递,如下所示
val param = "tableName"
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext.sql(s"""SELECT * FROM param=$param""")可以查看此链接以了解更多详细信息https://forums.databricks.com/questions/115/how-do-i-pass-parameters-to-my-sql-statements.html
发布于 2018-02-25 15:47:13
更简单地说,您应该能够执行以下操作:
val key_tbl = "mytable"
spark.sql(s"select count(1) from ${key_tbl}").collect()注意查询字符串之前的s:它使用Scala的字符串插值来使用另一个变量(key_tbl)构建查询。
你可以在Scala here中阅读更多关于字符串插值的内容。
发布于 2018-03-09 14:14:32
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)https://stackoverflow.com/questions/48971231
复制相似问题