Spark JDBC连接本地数据库、连接linux数据库

1.连接本地数据库

package sparkSQL

import java.sql.DriverManager

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

object JDBCSQL {
  def main(args: Array[String]): Unit = {
    val sconn=new SparkConf().setAppName("SQL").setMaster("local[*]")

    val sc=new SparkContext(sconn)

    val jdbcUrl = "jdbc:mysql://localhost:3306/jingdong?useUnicode=true&characterEncoding=utf8"
      val user = "root"
      val password = "wo123456"
      val conn = () => {
      Class.forName("com.mysql.jdbc.Driver").newInstance()
      DriverManager.getConnection(jdbcUrl, user, password)
      }
      val sql = "select * from product where pid between ? and ? "
      val jdbcRDD: JdbcRDD[(Int, String)] = new JdbcRDD(sc, conn, sql, 0, 30, 3,
      res => {
      val id = res.getInt("pid")
      val makeName = res.getString("pname")
      (id, makeName)
      }
      )
      println(jdbcRDD.collect().toBuffer)
      sc.stop()
  }

}

连接linux远程数据库

package sparkSQL

import java.sql.DriverManager

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

object sqlConnLinux {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setAppName("sql1").setMaster("local[*]")



    val sc=new SparkContext(conf)
//linux数据库的配置
    val jdbc1="jdbc:mysql://hh:3306/w01?useUnicode=true&characterEncoding=utf8"
    val user = "root"
    val password = "root"
    val conn=()=>{
      Class.forName("com.mysql.jdbc.Driver").newInstance()
      DriverManager.getConnection(jdbc1,user,password)
    }

    val sql="select * from orders where id between ? and ? "

    val jdbcRDD1:JdbcRDD[(Int,String)]=new JdbcRDD(sc,conn,sql,0,30,3,
      res=>{
        val id=res.getInt("id")
        val retail=res.getString("retail")

        (id,retail)
      }
    )

       println(jdbcRDD1.collect().toBuffer)
    sc.stop()
  }
}

猜你喜欢

转载自blog.csdn.net/qq_37001101/article/details/83999859
今日推荐