Как установить информацию о клиенте в Spark JDBC, как мы можем сделать в Connection setClientInfo - PullRequest
0 голосов
/ 09 декабря 2018

При использовании 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 Ответ

0 голосов
/ 09 декабря 2018

В настоящее время это невозможно в чистом виде;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), чтобы добавить требуемое свойство.Затем попросите spark использовать его, позвонив Class.forName(my.package.Driver) перед использованием Spark в Redshift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...