将 这些数据集 存入MySQL中的众多方法 的其中一种
【Dataframe存入MySQL】
//DataFrame 存入 Mysql
//指定URL
val url="jdbc:mysql://localhost:3306/wc"
//指定要存入的表 (不存在会自动创建)
val table="result_pv";
//设置配置文件
val properties = new Properties()
properties.setProperty("user","root")
properties.setProperty("password","123456")
//执行
df.write.mode("append").jdbc(url,table,properties)
【DataStream存入MySQL】
foreachRDD:作用于Dstream中每一个时间间隔的RDD
foreachPartition:作用于Dstream中每一个时间间隔的RDD中的每一个Partition
//DataStream 存入 Mysql
inm.foreachRDD(item=>{item.foreachPartition(item=>{
//获取连接
val connection = DriverManager
.getConnection("jdbc:mysql://localhost:3306/wc", "root", "123456")
//Sql语句
val sql="INSERT INTO `wc`.`sc` (`tel`, `num`) VALUES (?, ?);"
val ps = connection.prepareStatement(sql)
//循环处理
for (elem <- item) {
ps.setString(1,elem._1)
ps.setInt(2,elem._2)
ps.executeUpdate()
}
})})
【RDD存入MySQL】
方法还是跟上面的 Dstream存MySQL一样 就是通过foreachRDD 将 Dstream转成RDD
所有这里就直接foreachPartition就可以进行存储数据操作
// RDD 存入 Mysql
six.foreachPartition(item=>{
//获取连接
val connection = DriverManager
.getConnection("jdbc:mysql://localhost:3306/wc", "root", "123456")
//sql语句
val sql="INSERT INTO `wc`.`six` (`one`, `two`, `three`) VALUES (?, ?, ?);"
val ps = connection.prepareStatement(sql)
//循环处理
for (elem <- item) {
ps.setString(1,elem._1)
ps.setString(2,elem._2.toString)
ps.setString(3,elem._3.toString)
ps.executeUpdate()
}
})