使用Java / Scala java.sql.Connection时,我可以在连接上添加一些客户端信息例如:
val con: Connection = DriverManager.getConnection(jdbcHelper.finalUrl, jdbcHelper.getUser, jdbcHelper.getPass)
con.setClientInfo("ClientName", "JobAppStateManager")
con.prepareStatement(SOME_STATEMENT)
.....
现在我想将我的信息添加到Spark jdbc连接?
val opts = Map(
"url" -> finalUrl,
"user" -> user,
"password" -> password,
"dbtable" -> tableName
)
val df = sqlContext.
read.
format("jdbc").
options(opts).load
有可能以干净的方式吗?
1 回答
目前无法以干净的方式进行;
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使用它 .