繁体   English   中英

如何使用Spark Java从MariaDB中读取数据

[英]How to read data from mariadb using Spark java

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


     }
     }  

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

错误图片

这怎么了

似乎“ maridb”连接器有问题。 将主机URL从“ jdbc: mariadb :// $ {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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM