本文主要分析Spark SQL官方文档中有关于JDBC To Other Databases部分,以MySQL数据库为例,结合数据读写操作的实例代码进行详细的分析。本文中的代码需要使用到Mysql
JDBC连接jar包。
一、从mysql读取数据
1、单表查询
完整程序如下:
package com.ckm.spark.sql import java.util.Properties import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkContext, SparkConf} /** * Created by ckm on 2016/9/26. */ object SelectFromOneTable { def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("Spark SQL Test Case").setMaster("local[2]") val sparkContext = new SparkContext(sparkConf) val sqlContext = new SQLContext(sparkContext) val properties = new Properties() val url = "jdbc:mysql://m000:3306/test" val jdbcDF = sqlContext.read.format("jdbc").options( Map("url" -> url, "user" -> "root", "password" -> "root", "dbtable" -> "spark_sql_test1")).load() jdbcDF.registerTempTable("test1") sqlContext.sql("select * from test1 where id > 10").collect().take(10).foreach(println) } }
在debug过程中,上面的程序直到最后一行才开始真正的在mysql中执行sql查询。此时在Mysql中可以看到当前正在运行的sql语句。
![](http://img.blog.csdn.net/20160926224118326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面代码运行的最终结果如下: