本文最初思路来自 http://www.sparkexpert.com ,但是,发现 https://github.com/sujee81/SparkApps 提供的源码太老了,Spark官方从1.4.0已经放弃原来的方法(包含:createJDBCTable,insertIntoJDBC等 ),取而代之的是 sqlContext.read().jdbc()和sqlContext.write().jdbc()方法。
一、源码下载
git clone https://github.com/jiekechoo/spark-jdbc-apps.git
源代码目录如下,今天主要说明前面两个:
spark-load-from-db:从数据库读取
spark-save-to-db:保存到数据库
spark-stats:下一篇文章介绍
spark-jdbcrdd:下一篇文章介绍
二、源码分析
依赖包分析
父项目pom,定义了共用组件slf4j,spark版本1.5.1,mysql5.1.32等
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.sectong
spark-apps-parent
1.0-SNAPSHOT
spark-apps-parent
pom
spark-jdbcrdd
spark-load-from-db
spark-save-to-db
spark-stats
org.slf4j
slf4j-api
1.7.13
UTF-8
1.5.1
5.1.32
保存到数据库spark-save-to-db
依赖包,主要是spark-core和spark-sql,还有mysql驱动:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.sectong
spark-apps-parent
1.0-SNAPSHOT
spark-save-to-db
UTF-8
org.apache.spark
spark-core_2.10
${spark.version}
org.apache.spark
spark-sql_2.10
${spark.version}
mysql
mysql-connector-java
${mysql.version}
org.apache.maven.plugins
maven-compiler-plugin
3.2
1.8
1.8
-Xlint:all
true
true
看源码:
package com.sectong;
import java.io.Serializable;
import java.util.Properties;
import