scala写入mysql_Mysql学习(三)Spark(Scala)写入Mysql的两种方式

本文介绍了使用Scala和Spark将数据写入MySQL数据库的两种方法。首先,通过SparkSession读取Parquet文件,创建临时视图,执行SQL聚合操作,并使用`write.jdbc`将结果保存到指定的MySQL表。接着,展示了第二种方式,从文本文件读取数据,进行计数,转换为DataFrame,再写入另一个MySQL表。
摘要由CSDN通过智能技术生成

输入的文件路径

|输出的文件路径

""".stripMargin

)

System.exit(0)

}

/**

* 接收参数

*/

val Array(inputFile,outputFile) = args

val conf = new SparkConf().setAppName(s"${this.getClass.getSimpleName}")

// val sc = new SparkContext(conf)

// val input = ("F:\\Scala\\Spark\\第二十天-dmp项目\\资料\\out1")

/**

* 创建SparkSession

*/

val session: SparkSession = SparkSession.builder().config(conf).getOrCreate()

/**

* 读取文件的数据

*/

val df: DataFrame = session.sqlContext.read.parquet(inputFile)

/**

* 创建一个临时表

*/

df.createOrReplaceTempView("countProvince")

/**

* 统计出来count

*/

val sql =

"""

select

count(*),provincename, cityname

from

countProvince

group by

provincename, cityname

order by

provincename"""

val dff = session.sqlContext.sql(sql)

val url = "jdbc:mysql://192.168.123.102:3306/test"

val properties = new Properties()

properties.put("user","root")

properties.put("password","root")

dff.write.jdbc(url,"count",properties)

/**

* 第二种写入Mysql方式

*/

// val conf = new SparkConf().setMaster("local[2]").setAppName("CountProvince")

val sc = new SparkContext(conf)

// val Spark: SparkSession = SparkSession.builder().config(conf).getOrCreate()

// val sc = Spark.sparkContext

// /**

// * 读取文件

// */

// val inputPath = sc.textFile("F:\\Scala\\Spark\\第二十天-dmp项目\\资料\\data.txt")

// inputPath.foreach(println(_))

// /**

// * 计算count

// */

// val countRDD = inputPath

// .map(line => {

// val fields = line.split(",")

// (fields(24) + ":" + fields(25), 1)

// }).reduceByKey(_ + _)

//

// /**

// * 用Row来转换

// */

// val RowRdd: RDD[Row] = countRDD.map(tuple => {

// val diming = tuple._1

// val count = tuple._2

// Row(diming, count)

// })

// /**

// * 再用schema

// */

// val schema: StructType = StructType(

// StructField("diming", StringType, true) ::

// StructField("count", LongType, true) :: Nil

// )

// /**

// * 把 Row和 schema 合并成为 DataFrame

// */

// val df: DataFrame = Spark.createDataFrame(RowRdd,schema)

//

// /**

// * 创建一个临时表

// */

// df.createOrReplaceTempView("countProvince")

//

// /**

// * 把结果持久化到数据库

// */

// val url = "jdbc:mysql://192.168.123.102:3306/test"

// val properties = new Properties()

// properties.put("user","root")

// properties.put("password","root")

// df.write.jdbc(url,"count2",properties)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值