首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态构建Spark SQL查询

动态构建Spark SQL查询
EN

Stack Overflow用户
提问于 2018-02-25 15:25:02
回答 3查看 10.7K关注 0票数 5

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

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

代码语言:javascript
复制
spark.sql("set key_tbl=mytable")
spark.sql("select count(1) from ${key_tbl}").collect()
EN

回答 3

Stack Overflow用户

发布于 2018-02-25 15:49:42

您可以将其作为参数传递,如下所示

代码语言:javascript
复制
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

票数 7
EN

Stack Overflow用户

发布于 2018-02-25 15:47:13

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

代码语言:javascript
复制
val key_tbl = "mytable"
spark.sql(s"select count(1) from ${key_tbl}").collect()

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

你可以在Scala here中阅读更多关于字符串插值的内容。

票数 4
EN

Stack Overflow用户

发布于 2018-03-09 14:14:32

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48971231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档