spark操作mysql数据库

    首先在这里感谢张伟的专栏  http://blog.csdn.net/javastart/article/details/51023862 这篇博客给我的启发。

  本人对spark包括sparkstream,sparksql,sparkMLlib都有一些了解,自己也写过一些demo,但是由于没有很详细地去查看官网的API文档,导致编程想法固定无法变通。

    原本是想用spark对数据库某个字段或者某些字段做一些操作,包括统计排序等等 ;结果一上来就运用java的方法对数据库操作,然后把字段放入RDD中去做统计,最后发现这样的方法很烦不说,代码也不好写;后来才发现sparkSQL也能做那样的事情,废话少说了,直接上代码。

    

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

object SparkSQL {

  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("SparkSQL").setMaster("local[4]")
    val sc = new SparkContext(conf)
    val sqlConetext = new SQLContext(sc)

    val url = "jdbc:mysql://localhost:3306/nsa"
    val prop = new java.util.Properties
    //数据库用户名密码
    prop.setProperty("user","root")
    prop.setProperty("password","root")

    //读取数据库,第二个参数是数据库表,Array里面的参数相当于sql里面的where语句
    val data = sqlConetext.read.jdbc(url,"attacklog",Array("attack_type = '暴力破解'"),prop)
    val at = data.groupBy("attack_type")
    //求和
    val sumAttack = at.sum("count")

    sumAttack.show()
  }
}
结果如下图所示:

这个是单纯的对SparkSQL中dataframe的求和操作,其他的例如排序,聚合有兴趣的可以自己去尝试下。

你可能感兴趣的:(spark)