【问题标题】:How to read data from mariadb using Spark java如何使用 Spark java 从 mariadb 读取数据
【发布时间】:2019-03-14 02:23:47
【问题描述】:

我需要使用 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();       


     }
     }  

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

这有什么问题?

【问题讨论】:

  • 列“isActive”的值为真,而不是列名。也许,表包含这样的虚拟数据。

标签: java apache-spark jdbc apache-spark-sql mariadb


【解决方案1】:

“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 2018-03-30
    • 2021-03-11
    • 1970-01-01
    • 2016-06-29
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多