Я пытаюсь записать данные из 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