Как установить CHARACTER SET для записи в таблицу MySQL с использованием источника данных JDBC? - PullRequest
0 голосов
/ 18 декабря 2018

Я использую Spark JDBC для ввода данных в таблицу Mysql.Это также создает таблицу, если таблица не существует.Многие из текста имеют специальные символы.При проглатывании происходит сбой при обнаружении каких-либо специальных символов.Я решил эту проблему, установив CHARACTER SET utf8 в таблицу MySQL вручную.

Можно ли установить CHARACTER SET utf8 во время создания таблицы в spark JDBC?

Я использую DataFrames для сохранения данных в MySQL.

df.write
  .format("jdbc")
  .option("url", "jdbc:mysql://localhost")
  .option("dbtable", "spark.tweet")
  .option("user", "root")
  .option("password", "root")
  .mode(SaveMode.Append)
  .save()

Ответы [ 2 ]

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

Используйте параметр createTableOptions, например, option("createTableOptions","CHARACTER SET utf8").

Цитирование https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html:

createTableOptions Это параметр, относящийся к средству записи JDBC.Если этот параметр указан, он позволяет задавать параметры таблицы и раздела для конкретной базы данных при создании таблицы (например, CREATE TABLE t (name name) ENGINE = InnoDB.).Эта опция применима только к письму.

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

На самом деле кодировка определяется вашим доступом к базе данных MySQL.Поэтому лучший способ - установить кодировку в URL-адресе jdbc следующим образом:

jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}&useUnicode=true&characterEncoding=UTF-8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...