spark2.x由浅入深深到底系列六之RDD java api用JdbcRDD读取关系型数据库
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,学习任何的spark技术之前,请先正确理解spark,可以参考:正确理解spark以下是用spark RDD java api实现从关系型数据库中读取数据,这里使用的是derby本地数据库,当然可以是
千家信息网最后更新 2026年11月03日spark2.x由浅入深深到底系列六之RDD java api用JdbcRDD读取关系型数据库
学习任何的spark技术之前,请先正确理解spark,可以参考:正确理解spark
以下是用spark RDD java api实现从关系型数据库中读取数据,这里使用的是derby本地数据库,当然可以是mysql或者oracle等关系型数据库:
package com.twq.javaapi.java7;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function;import org.apache.spark.rdd.JdbcRDD;import java.io.Serializable;import java.sql.*;public class JavaJdbcRDDSuite implements Serializable { public static void prepareData() throws ClassNotFoundException, SQLException { //使用本地数据库derby,当然可以使用mysql等关系型数据库 Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); Connection connection = DriverManager.getConnection("jdbc:derby:target/JavaJdbcRDDSuiteDb;create=true"); try { //创建一张表FOO,ID是一个自增的主键,DATA是一个INTEGER列 Statement create = connection.createStatement(); create.execute( "CREATE TABLE FOO(" + "ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," + "DATA INTEGER)"); create.close(); //插入数据 PreparedStatement insert = connection.prepareStatement("INSERT INTO FOO(DATA) VALUES(?)"); for (int i = 1; i <= 5; i++) { insert.setInt(1, i * 2); insert.executeUpdate(); } insert.close(); } catch (SQLException e) { // If table doesn't exist... if (e.getSQLState().compareTo("X0Y32") != 0) { throw e; } } finally { connection.close(); } } public static void shutdownDB() throws SQLException { try { DriverManager.getConnection("jdbc:derby:target/JavaJdbcRDDSuiteDb;shutdown=true"); } catch (SQLException e) { // Throw if not normal single database shutdown // https://db.apache.org/derby/docs/10.2/ref/rrefexcept71493.html if (e.getSQLState().compareTo("08006") != 0) { throw e; } } } public static void main(String[] args) throws Exception { JavaSparkContext sc = new JavaSparkContext("local", "JavaAPISuite"); //准备数据 prepareData(); //构建JdbcRDD JavaRDD rdd = JdbcRDD.create( sc, new JdbcRDD.ConnectionFactory() { @Override public Connection getConnection() throws SQLException { return DriverManager.getConnection("jdbc:derby:target/JavaJdbcRDDSuiteDb"); } }, "SELECT DATA FROM FOO WHERE ? <= ID AND ID <= ?", 1, 5, 1, new Function() { @Override public Integer call(ResultSet r) throws Exception { return r.getInt(1); } } ); //结果: [2, 4, 6, 8, 10] System.out.println(rdd.collect()); shutdownDB(); sc.stop(); }} 详细了解RDD的api的话,可以参考: spark core RDD api原理详解
数据
数据库
参考
原理
技术
结果
建一
准备
学习
由浅入深
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网企业
科技与互联网
互联网是不是新科技
中国互联网科技发展
伴你行互联网科技有限公司
互联网科技论坛
互联网科技汛
左右互联网络科技
深圳国际航运科技和互联网
温州喔噻互联网科技有限公司
福州新华互联网科技学校 知乎
中化能源互联网科技招聘
厦门千工互联网科技有限公司
996高科技互联网公司
群盈汇互联网科技有限公司
工业互联网展湾科技股份有限公司
扫呗互联网科技有限公司
版纳互联网科技选哪家
北京互联网科技类企业分布
互联网科技创业有什么好项目
咖啡网
上海卓越科技 互联网
左右互联网络科技
成都玖崟互联网科技有限公司乐商圈怎么样
互联网为啥属于高科技
互联网软件和科技
江阴互联网智能科技产品进口
佛山市拉法互联网科技有限公司
电子商务与互联网科技的关系
神州科技互联网有限公司