使用Java / Scala java.sql.Connection时,我可以在连接顶部添加一些客户端信息,例如:
Row, Header1, Header2, Header3, Header4
1, 1.23, 5.67, 6.55, N/A
2, N/A, 19.67, 9.55, N/A
3, N/A, 19.67, 9.55, 16.88
现在我想将我的信息添加到Spark jdbc连接中吗?
val con: Connection = DriverManager.getConnection(jdbcHelper.finalUrl, jdbcHelper.getUser, jdbcHelper.getPass)
con.setClientInfo("ClientName", "JobAppStateManager")
con.prepareStatement(SOME_STATEMENT)
.....
有可能以一种干净的方式吗?
答案 0 :(得分:0)
目前尚不可能以干净的方式进行; spark-redshift
不添加该属性:
https://github.com/databricks/spark-redshift/blob/8adfe95a25d6bbe8aedc2010a756ccf3615eab24/src/main/scala/com/databricks/spark/redshift/RedshiftJDBCWrapper.scala#L228
但是,有一个困难的解决方法:创建自己的JDBC驱动程序包装程序,该包装程序将覆盖driver.connect(url, properties)
函数以添加所需的属性。然后在Redshift上使用Spark之前,通过调用Class.forName(my.package.Driver)
来告诉spark使用它。