spark读取Jdbc数据

 



    
        test
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    spark

    
        
        2.3.3
        2.11.12
        2.11
    


    

        
        
            org.scala-lang
            scala-library
            ${scala.version}
        
        
        
            org.apache.spark
            spark-sql_${spark.scala}
            ${spark.version}
        
        
        
            org.apache.spark
            spark-hive_${spark.scala}
            ${spark.version}
        
    
    
        
            
            
                net.alchim31.maven
                scala-maven-plugin
                4.3.1
                
                    
                        
                            compile
                            testCompile
                        
                        
                            
                                -dependencyfile
                                ${project.build.directory}/.scala_dependencies
                            
                        
                    
                
            
        
    

​​​​​​​

package com.ws

import java.sql.{DriverManager, ResultSet}

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.JdbcRDD

object SparkReadMysql {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setAppName("spark加载mysql数据")
      .setMaster("local")

    val sc = new SparkContext(conf)


    val getConn = () => DriverManager.getConnection(
      "jdbc:mysql://localhost:3306/dynamic_rule", "root", "root")
    val resMapping = (rs: ResultSet) => {
      val id = rs.getInt(1)
      val name = rs.getString(2)
      val url = rs.getString(3)
      val perms = rs.getString(4)
      (id, name, url, perms)
    }

    /*
        new JdbcRDD(sc,getConnection(),sql,lower,upper,numpt,resultMapFunc)
        sc: SparkContext对象
        getConnection(): 一个返回数据库连接的函数
        sql: sql脚本,因为他要分区进行处理,所以sql中需要默认提供一个splitPK,并用占位符指定范围,用于分割 (menu_id> ? and menu_id ? and menu_id

创建一个JdbcRdd,这个JdbcRdd是rdd的子类,需要7个参数,有一定局限性

    /*
        new JdbcRDD(sc,getConnection(),sql,lower,upper,numpt,resultMapFunc)
        sc: SparkContext对象
        getConnection(): 一个返回数据库连接的函数
        sql: sql脚本,因为他要分区进行处理,所以sql中需要默认提供一个splitPK,并用占位符指定范围,用于分割 (menu_id> ? and menu_id

你可能感兴趣的:(spark,spark,java,大数据)