use*_*130 5 scala apache-spark apache-spark-sql
我们如何使用Scala中的Spark动态地将列名和操作符名称传递给SQL查询?
我试过(不成功)以下内容:
spark.sql("set key_tbl=mytable")
spark.sql("select count(1) from ${key_tbl}").collect()
Run Code Online (Sandbox Code Playgroud)
您可以将其作为参数传递,如下所示
val param = "tableName"
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext.sql(s"""SELECT * FROM param=$param""")
Run Code Online (Sandbox Code Playgroud)
可以查看此链接了解更多详情 https://forums.databricks.com/questions/115/how-do-i-pass-parameters-to-my-sql-statements.html
更简单地说,您应该能够执行如下操作:
val key_tbl = "mytable"
spark.sql(s"select count(1) from ${key_tbl}").collect()
Run Code Online (Sandbox Code Playgroud)
请注意查询s字符串之前的内容:这使用 Scala 的字符串插值来使用另一个变量 ( key_tbl) 构建查询。
您可以在此处阅读有关 Scala 中字符串插值的更多信息。
| 归档时间: |
|
| 查看次数: |
3802 次 |
| 最近记录: |