zoukankan      html  css  js  c++  java
  • Spark与mysql数据库数据交互实例

    1.Spark可以读取多种数据源,本实例为读取mysql.

    2.准备工作:

    sacla,idea,mysql-connector-java,版本从:https://mvnrepository.com/获取

    3.数据获取方式一:

    object WordFreq {
      def main(args: Array[String]) {
    
        val spark: SparkSession = SparkSession.builder().master("local").appName("getDatafromMysql")
          .config("spark.sql.shuffle.partitions", 1).getOrCreate()
    
        val properties: Properties = new Properties()
        properties.setProperty("user", "root")
        properties.setProperty("password", "root")
        properties.setProperty("driver", "com.mysql.jdbc.Driver")
    
        //方式一
        val person: DataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306/acc", "ttt", properties)
        person.show()
        //方式二
        spark.read.jdbc("jdbc:mysql://localhost:3306/acc", "(select * from ut_tt) T", properties).show()
      }
    }

    数据获取方式二:

            val spark: SparkSession = SparkSession.builder().master("local").appName("getDatafromMysql")
              .config("spark.sql.shuffle.partitions", 1).getOrCreate()
            val map: Map[String, String] = Map[String, String](
              elems = "url" -> "jdbc:mysql://localhost:3306/yyyy",
              "driver" -> "com.mysql.jdbc.Driver",
              "user" -> "root",
              "password" -> "root",
              "dbtable" -> "notice")
            val score: DataFrame = spark.read.format("jdbc").options(map).load
            score.show()

    数据获取方式三:

          val spark: SparkSession = SparkSession.builder().master("local").appName("getDatafromMysql")
              .config("spark.sql.shuffle.partitions", 1).getOrCreate()
            val reader: DataFrameReader = spark.read.format("jdbc")
              .option("url", "jdbc:mysql://localhost:3306/yyyyyy")
              .option("driver", "com.mysql.jdbc.Driver")
              .option("user", "root")
              .option("password", "root")
              .option("dbtable", "notice")
    
            val source2: DataFrame = reader.load()
    
            source2.show()

    将数据插入mysql数据库

     //将查询结果插入mysql表
    
        val spark: SparkSession = SparkSession.builder().master("local").appName("getDatafromMysql")
          .config("spark.sql.shuffle.partitions", 1).getOrCreate()
    
        val result  = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/ttttttt")  //*****这是数据库名
          .option("driver", "com.mysql.jdbc.Driver").option("dbtable", "notice")//*****是表名
          .option("user", "root").option("password", "root").load()
    
    
        val properties: Properties = new Properties()
        properties.setProperty("user", "root")
        properties.setProperty("password", "root")
        properties.setProperty("driver", "com.mysql.jdbc.Driver")
        properties.setProperty("characterEncoding","utf8")
        result.write.mode(SaveMode.Append).jdbc("jdbc:mysql://localhost:3306/iii", "notice_copy1", properties)

    所需引用:

    import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.SparkSession
    import java.util.Properties

    在pom文件中,添加mysql-connector-java引用:

     <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>*****</version>
        </dependency>

    4.运行结果:

  • 相关阅读:
    MVC中的统一验证机制~终极了(自己的改良版)
    基础才是重中之重~类是怎么执行的
    IE和火狐中模仿Click事件及提交到新窗口总结
    基础才是重中之重~你是否真正理解static对象
    VS远程调试(在IIS中打开网站,进入VS中的断点)
    iOS开发复选框类库SSCheckBoxView
    通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
    读《微软研发:制胜策略》总结(1)
    hdu1081To The Max
    Red hat 5.4 安装Eclipse 出现的问题
  • 原文地址:https://www.cnblogs.com/jizhong/p/12625247.html
Copyright © 2011-2022 走看看