加载mysql数据得到RDD
import org.apache.spark.rdd.JdbcRDD import org.apache.spark.{SparkConf, SparkContext} import java.sql.{Connection, DriverManager, ResultSet} case class Soldier(id:Int,name:String,role:String,battle:Double) object 加载mysql数据得到RDD { def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName("加载数据库数据示例") conf.setMaster("local") val sc = new SparkContext(conf) // 加载mysql中的表 // 定义一个创建jdbc连接的函数 val getConn = ()=>{ DriverManager.getConnection("jdbc:mysql://localhost:3306/abc", "root", "123456") } // 定义一个查询数据用的sql val sql = "select * from battel where id>=? and id<=?" // 定义一个数据映射逻辑(函数): 映射每一行查询结果到目标数据类型 val mapRow = (rs:ResultSet)=>{ val id: Int = rs.getInt(1) val name: String = rs.getString(2) val role: String = rs.getString(3) val battle: Double = rs.getDouble(4) Soldier(id,name,role,battle) } // 直接构造一个JdbcRDD来映射mysql中的表数据 val rdd: JdbcRDD[Soldier] = new JdbcRDD[Soldier](sc, getConn, sql, 1, 100, 2, mapRow) rdd.foreach(println) sc.stop() } }