JdbcRDD 用来链接数据库,直接重数据库中获取数据分析。
JdbcRDD有6个参数 。
1、 sc SparkContext 类型变量
2、链接 jdbc的链接对象
3、sql语句,一般为查询语句
4和5 、为上下边界。
6、partitions 分区数
最后一个 参数,里面存放的是执行sql语句的返回值。
JdbcRDD[T: ClassTag](
sc: SparkContext,
getConnection: () => Connection,
sql: String,
lowerBound: Long,
upperBound: Long,
numPartitions: Int,
mapRow: (ResultSet) => T = JdbcRDD.resultSetToObjectArray _)
配上demo
val conf = new SparkConf().setAppName(this.getClass().getSimpleName().filter(!_.equals('$'))).setMaster("local")
val sc = new SparkContext(conf)
val rdd = new JdbcRDD(
sc,
() => {
Class.forName("com.mysql.jdbc.Driver").newInstance()
DriverManager.getConnection("jdbc:mysql://localhost:3306/spark_test", "root", "root")
},
"SELECT * FROM spark_user WHERE userid >= ? AND userid <= ?",
1,
11,
3,
rs => {
val username = rs.getString(2)
val pwd = rs.getString(3)
(username,pwd)
})
rdd.foreach(su=>{
println(su._1+"->"+su._2)
})
sc.stop()