package com.ws.jdbc
import java.util.Properties
import org.apache.spark.sql.{DataFrame, SparkSession}
/**
* spark sql jdbc数据源
*/
object JdbcDataSource {
def main(args: Array[String]): Unit = {
val sparkSession = SparkSession.builder().appName("JdbcDataSource").master("local[*]").getOrCreate()
//连接数据库,读取表结构,load也是Transformation
val db: DataFrame = sparkSession.read.format("jdbc").options(
Map("url" -> "jdbc:mysql://hadoop-03:3306/ip?charatorEncoding=utf-8",
"driver" -> "com.mysql.jdbc.Driver",
"dbtable" -> "ipcount",
"user" -> "root",
"password" -> "root")).load()
//sql方式
//db.createTempView("t_ipcount")
//val result = sparkSession.sql("select * from t_ipcount where id > 15")
//dataFrame 方式
val result = db.filter(r => {
r.getAs[Int]("id") > 15
})
import sparkSession.implicits._
//lambda表达式
//val result = db.filter($"id" >= 15)
//将结果写入mysql
val p = new Properties()
p.put("user", "root")
p.put("password", "root")
// ignore : 如果表存在,不做任何操作;表不存在,创建表并将数据写进去
result.write.mode("append").jdbc("jdbc:mysql://hadoop-03:3306/ip?charatorEncoding=utf-8", "ipcount2", p)
//json输出目录
result.write.json("E:\\bigData\\testdata\\ip3")
//csv格式输出目录
result.write.csv("E:\\bigData\\testdata\\ip2")
//保存到文件只能保存一列,多个字段报错,且字段类型必须为string
result.write.text("E:\\bigData\\testdata\\ip4")
//也可以指定hdfs路径
result.write.parquet("E:\\bigData\\testdata\\ip4")
//result.show()
sparkSession.stop()
}
}
spark sql jdbc数据源 多种输出方式
猜你喜欢
转载自blog.csdn.net/bb23417274/article/details/82955538
今日推荐
周排行