zoukankan      html  css  js  c++  java
  • IDEA 中Spark SQL通过JDBC连接mysql数据库

    一.IDEA装驱动:

    1.下载一个MySQL的JDBC驱动:mysql-connector-java-5.1.44.tar.gz
    2.在idea Open Moudle Settings 在 Moudle中   选Dependencies + JDC驱动的解压位置 选(mysql-connector-java-5.1.44-bin)这个就ok

    二.程序:

    import java.util.Properties
    
    import com.sun.org.apache.xalan.internal.xsltc.compiler.util.IntType
    import org.apache.spark.sql.types._
    import org.apache.spark.sql.{Row, SparkSession}
    
    
    object JDBC_To_DF {
      val spark= SparkSession.builder().getOrCreate()
      import spark.implicits._
      def main(args: Array[String]): Unit = {
    
        val jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/***")  //*****这是数据库名
          .option("driver", "com.mysql.jdbc.Driver").option("dbtable", "****")//*****是表名
          .option("user", "*****").option("password", "*****").load()
        jdbcDF.show()
    
        val studentRDD=spark.sparkContext.parallelize(Array("3 小翠 G 27","4 小狗蛋 B 50"))
                          .map(x=>x.split(" "))
        val ROWRDD=studentRDD.map(x=>Row(x(0).toInt,x(1).trim,x(2).trim,x(3).toInt))
           ROWRDD.foreach(print)
        //设置模式信息
        val schema=StructType(List(StructField("id",IntegerType,true),StructField("name",StringType,true),StructField("gender",StringType,true),StructField("age", IntegerType, true)))
    
        val studentDF=spark.createDataFrame(ROWRDD,schema)
    
        val parameter=new Properties()
        parameter.put("user","****")
        parameter.put("password","****")
        parameter.put("driver","com.mysql.jdbc.Driver")
        studentDF.write.mode("append").jdbc("jdbc:mysql://localhost:3306/******","/*/*/*/*/*",parameter) //******"是数据库名,/*/*/*/*/*表名
       jdbcDF.show()
      }
    }

    结果:

    +---+----+------+---+
    | id|name|gender|age|
    +---+----+------+---+
    |  1|  小周|     B| 25|
    |  2|  小苏|     G| 27|
    |  3|  小翠|     G| 27|
    |  4| 小狗蛋|     B| 50|
    |  3|  小翠|     G| 27|
    |  4| 小狗蛋|     B| 50|
    +---+----+------+---+

  • 相关阅读:
    andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
    MTK Camera驱动移植
    云计算VDI相关职位招聘
    Android内存泄露之开篇
    关于ping以及TTL的分析
    STL之关联容器的映射底层
    STL非变易算法
    自己主动更新 -- 版本比較(2)
    activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
    合并多个文本文件方法
  • 原文地址:https://www.cnblogs.com/soyo/p/7660687.html
Copyright © 2011-2022 走看看