SparkSQL访问MySql源

本文介绍了如何在Spark环境中通过SparkSQL访问MySQL数据库,包括添加必要的依赖,创建SparkSession,以及两种不同的连接和操作MySQL数据库的方法。
摘要由CSDN通过智能技术生成

Spark环境

spark-2.3.0

添加依赖

<dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.11</artifactId>
      <version>2.3.0</version>
</dependency>

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.22</version>
</dependency>

创建SparkSession

/**
     * SparkSession
     * 支持数据源:textFile,load,csv,json,text,format,jdbc
     * @return
     */
    public static SparkSession getSparkSession() {
        return SparkSession
                .builder()
                .appName("SparkSQL")
                .master("local[*]")
                .getOrCreate();
    }

访问Mysql方式1:

public static void test(){
        String url="jdbc:mysql://localhost:3306/sparksql?user=root&password=123456";
        String tableName="users";
        SparkSession spark= SparkUtil.getSparkSession();
        Map<String,String> map=new HashMap<>();
        map.put("driver","com.mysql.jdbc.Driver");
        map.put("url",url);
        map.put("dbtable",tableName);
        map.put("fetchSize","100");

        //读取users信息
        Dataset<Row> jdbcDF = spark.read()
                .format("jdbc")
                .options(map)
                .load();

        //读取users信息,保存到users_copy表
        jdbcDF.write()
                .format("jdbc")
                .option("url", url)
                .option("dbtable", "users_copy")
                .save();
       
}

访问Mysql方式2:

public static void test2(){
        String url="jdbc:mysql://localhost:3306/sparksql";
        String tempTableName=" (select id,name from users) as u";
        SparkSession spark= SparkUtil.getSparkSession();
        Properties connectionProperties = new Properties();
        connectionProperties.put("user", "root");
        connectionProperties.put("password", "123456");
        connectionProperties.put("isolationLevel","REPEATABLE_READ");
        //读取users信息
        Dataset<Row> jdbcDF2 = spark.read()
                .jdbc(url, tempTableName, connectionProperties);
        //读取users信息,保存到users1表
        jdbcDF2.write()
                .jdbc(url, "users1", connectionProperties);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值