Невозможно записать набор данных spark в базу данных с использованием jdbc - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно записать мой набор искровых данных в таблицу базы данных Oracle.Я использую метод записи набора данных с режимом добавления.Но получаю исключение для анализа, когда задание spark запускается на кластере с помощью команды spark2-submit.

Я прочитал файл json, сплющил его и установил в набор данных как abcDataset.

Версия Spark - 2 Драйвер JDBC для базы данных Oracle - oracle.jdbc.driver.OracleDriver Язык программирования - Java

Dataset<Row> abcDataset= dataframe.select(col('abc').....{and other columns};


Properties dbProperties = new Properties();
            InputStream is = SparkReader.class.getClassLoader().getResourceAsStream("dbProperties.yaml");
            dbProperties.load(is);
            String jdbcUrl = dbProperties.getProperty("jdbcUrl");
            dbProperties.put("driver","oracle.jdbc.driver.OracleDriver");
            String where = "USER123.PERSON";
            abcDataset.write().format("org.apache.spark.sql.execution.datasources.jdbc.DefaultSource").option("driver", "oracle.jdbc.driver.OracleDriver").mode("append").jdbc(jdbcUrl, where, dbProperties);

Ожидается - запись в базу данных, но с ошибкой ниже -

org.apache.spark.sql.AnalysisException: Multiple sources found for jdbc (org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider, org.apache.spark.sql.execution.datasources.jdbc.DefaultSource), please specify the fully qualified class name.;
    at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:670) 

Нужно ли нам устанавливать какое-либо дополнительное свойство в команде spark submit, так как я запускаю это в кластере, или какой-либо шаг отсутствует?

1 Ответ

0 голосов
/ 16 мая 2019

Вам нужно использовать либо abcDataset.write.jdbc, либо abcDataset.write.format ("jdbc"), когда вы пишете через jdbc от spark до rdbms.

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