用scala从spark向postgresql传递变量

bgibtngc  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(320)

通常,我可以通过以下方式从spark访问配置单元表:

val start = "20191009"
val end   = "20200112"
val df= ss.sql(s"""select * from myTable where dat between '$start' and '$end' """)

根据前面的代码,我可以通过包含 $ 在变量前面。
现在我想用同样的逻辑 postgres table。我有一个postgres表,我通过它连接到它:

val statement = connection.createStatement()

var gg = statement.executeQuery("update myTable set firstV='NewValue' where SecondV =$val;")

我想把一个变量传递给上一个sql(to val variable)。

nnsrf1az

nnsrf1az1#

您的第二个代码段未使用 s 修饰符,因此 $ 替换将不起作用。尝试

var gg = statement.executeQuery(s"update myTable set firstV='NewValue' where SecondV =$val;")```
yrwegjxp

yrwegjxp2#

作为 @Charlie Flowers 击中部分问题;我错过了比赛 s 查询前面的修饰符。另一个问题是试图将postgres表的结果保存在一个变量中(在我的例子中) gg ),查询将直接在postgres数据库/表上执行,所以我删除了 var gg = 部分。

statement.executeQuery(s"update myTable set firstV='NewValue' where SecondV =$val;")

而且,这对我很有帮助,因为我以前 executeQuery 当我不得不使用 executeUpdate ,所以我的查询应该是:

statement.executeUpdate(s"update myTable set firstV='NewValue' where SecondV =$val;")

相关问题