spark DataFrame 使用Java读取mysql和写入mysql的例子

本文通过具体的Java代码示例,详述如何利用Spark DataFrame从MySQL数据库读取数据,以及将处理后的数据写回MySQL的过程,涵盖连接配置、数据加载与保存等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子


package com.hjh.demo.mysql;


import java.util.Properties;


import org.apache.log4j.Logger;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.SaveMode;


public class Demo_Mysql3 {


private static Logger logger = Logger.getLogger(Demo_Mysql2.class);


public static void main(String[] args) {


SparkConf sparkConf = new SparkConf();


sparkConf.setAppName("Demo_Mysql2");
sparkConf.setMaster("local[5]");
JavaSparkContext sc = null;
try {
sc = new JavaSparkContext(sparkConf);


SQLContext sqlContext = new SQLContext(sc);


// 一个条件表示一个分区
String[] predicates = new String[] {
"1=1 order by id limit 400000,50000",
"1=1 order by id limit 450000,50000",
"1=1 order by id limit 500000,50000",
"1=1 order by id limit 550000,50000",
"1=1 order by id limit 600000,50000" };


String url = "jdbc:mysql://localhost:3306/mysql";
String table = "demo3";
Properties connectionProperties = new Properties();
connectionProperties.setProperty("dbtable", table);// 设置表
connectionProperties.setProperty("user", "root");// 设置用户名
connectionProperties.setProperty("password", "root");// 设置密码


// 读取数据
DataFrame jdbcDF = sqlContext.read().jdbc(url, table, predicates,
connectionProperties);


jdbcDF.printSchema();


// 写入数据
String url2 = "jdbc:mysql://localhost:3306/mysql";
Properties connectionProperties2 = new Properties();
connectionProperties2.setProperty("user", "root");// 设置用户名
connectionProperties2.setProperty("password", "root");// 设置密码
String table2 = "demo4";


// SaveMode.Append表示添加的模式


// SaveMode.Append:在数据源后添加;
// SaveMode.Overwrite:如果如果数据源已经存在记录,则覆盖;
// SaveMode.ErrorIfExists:如果如果数据源已经存在记录,则包异常;
// SaveMode.Ignore:如果如果数据源已经存在记录,则忽略;


jdbcDF.write().mode(SaveMode.Append)
.jdbc(url2, table2, connectionProperties2);
} catch (Exception e) {
logger.error("|main|exception error", e);
} finally {
if (sc != null) {
sc.stop();
}


}


}
}


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值