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()