Мне нужно записать мой набор искровых данных в таблицу базы данных 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, так как я запускаю это в кластере, или какой-либо шаг отсутствует?