gpt4 book ai didi

java - 如何使用Spark java从mariadb读取数据

转载 作者:行者123 更新时间:2023-11-30 02:01:29 27 4
gpt4 key购买 nike

我需要使用 Spark 和 Java 从 MariaDB 读取表。

我编写了一个Java代码,用于从数据库读取表数据。连接建立成功,但在读取数据时产生错误。我正在尝试将表数据作为数据框读取。但列名在结果中显示为列值。找到下面给出的代码:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import static org.apache.spark.sql.functions.col;

public class mariadb_to_csv {
public static void main(String[] args) {

Properties prop = new Properties();
String resourceName = "config.properties";
ClassLoader loader = Thread.currentThread().getContextClassLoader();
try(InputStream resourceStream = loader.getResourceAsStream(resourceName)) {
prop.load(resourceStream);
} catch (IOException e) {
e.printStackTrace();
}
SparkSession spark = SparkSession.builder()
.appName("Java Spark SQL basic example")
.config("spark.some.config.option", "some-value").getOrCreate();

Dataset<Row> jdbcDF = spark.read().format("jdbc")
.option("url","url_address")
.option("driver", "org.mariadb.jdbc.Driver")
.option("dbtable", "source_table")
.option("user", "username")
.option("password", "password")
.load();
jdbcDF.select(col("code"), col("name"), col("isActive"), col("createdByUser"), col("modifiedByUser")).show();


}
}

结果,列值在列名称中重复。

error image

这有什么问题吗?

最佳答案

“maridb”连接器似乎有问题。将主机 URL 从“jdbc:ma​​riadb://${Hostname}:${Port}/${Database}”更改为“jdbc:mysql://$ {Hostname}:${Port}/${Database}"为我解决了问题。

MariaDB 和 Databricks 还使用“jdbc”作为连接 URL 来解释如何使用 Spark 从 Mariadb 读取数据。

  1. https://mariadb.com/kb/en/library/mariadb-columnstore-with-spark/#usage

  2. https://docs.databricks.com/spark/latest/data-sources/sql-databases.html

关于java - 如何使用Spark java从mariadb读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718788/

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