gpt4 book ai didi

java - 无法使用 jdbc 将 Spark 数据集写入数据库

转载 作者:行者123 更新时间:2023-12-02 05:38:41 24 4
gpt4 key购买 nike

我需要将 Spark 数据集写入 Oracle 数据库表。我正在使用带有追加模式的数据集写入方法。但得到分析异常,当使用spark2-submit命令在集群上触发spark作业时。

我已读取 json 文件,将其展平并设置为 abcDataset 数据集。

Spark 版本 - 2甲骨文数据库JDBC 驱动程序 - 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 命令中设置任何其他属性,因为我在集群上运行此命令,或者缺少任何步骤?

最佳答案

当您通过 jdbc 从 Spark 写入到 RDBMS 时,需要使用 abcDataset.write.jdbc 或 abcDataset.write.format("jdbc")。

关于java - 无法使用 jdbc 将 Spark 数据集写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com