Запись данных из Spark sql в maria db (mysql) с использованием dataframe приводит к синтаксической проблеме - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь записать данные из Hive с помощью spark-scala с помощью «фрейма данных» в MariaDB (MySQL), но это вызывает проблему с синтаксисом.

Код:

dataFrame.repartition(10).write.mode(SaveMode.Append).jdbc(connectionProperties.getProperty("url"), "product_mysql", connectionProperties)

Ошибка:

Caused by: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"vendor_nbr","vendor_dept_nbr","vendor_seq_nbr") VALUES (2124,81,0)' at line 1
Query is: INSERT INTO product_mysql ("vendor_nbr","vendor_dept_nbr","vendor_seq_nbr") VALUES (2124,81,0)
java thread: MariaDb-bulk-1
    at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:126)
    at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol$1.handleResultException(AbstractQueryProtocol.java:625)
    at org.mariadb.jdbc.internal.protocol.AsyncMultiRead.call(AsyncMultiRead.java:142)
    at org.mariadb.jdbc.internal.protocol.AsyncMultiRead.call(AsyncMultiRead.java:66)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more

Проблема заключается в том, что когда кадр данных генерирует вставку в команду как

INSERT INTO product_mysql ("vendor_nbr","vendor_dept_nbr","vendor_seq_nbr") VALUES (2124,81,0)

он ставит двойные кавычки ("") над полем, что приводит к ошибке.

Без двойных кавычек работает нормально

INSERT INTO product_mysql (vendor_nbr,vendor_dept_nbr,vendor_seq_nbr) VALUES (7786,3,0);
Query OK, 1 row affected (0.339 sec)

Пожалуйста, помогите ... Spark версия 2 Mariadb 10

...