加载mysql数据得到RDD

加载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()
  }
}
上一篇:SQL SERVER SSIS Data Flow


下一篇:spark开发调优