首页 > 解决方案 > 在 Scala 上,如何使用 sql 语句将参数传递给文件并使用 sqlContext.sql?

问题描述

我的 sql 查询很长并且存储在一个文件中。我想where 通过传递参数使子句动态化。在 scala 中,我想使用 spark sqlcontext.sql(查询文件)执行此操作。请帮忙。

val FromDate = "2019-02-25"

val sqlfile = fromFile("queryfile").getLines.mkString

val result = sqlContext.sql(sqlfile)

在我有的文件上:

Select col1, col2 from table1 where transdate = '${FromDate}'

标签: sqlscalaapache-sparkdynamic

解决方案


很简单,使用scala的replace方法:

val FromDate = "2019-02-25"
val s = "Select col1, col2 from table1 where transdate = '${FromDate}'"
val withParameters= s.replace("${FromDate}",FromDate )
println(withParameters)
val result = sqlContext.sql(withParameters)

推荐阅读