SparkSQL执行update操作修改mysql数据
【SparkSQL执行update操作修改mysql数据】这是不需要改源码的方式
//user表样例类
case class User1(id: Long, name: String, password: String, imgUrl: String, update_date: String)object SparkSQLUpdateMySQLOfJDBC {def main(args: Array[String]): Unit = {
//SparkSession
val spark: SparkSession = SparkSession.builder()
.appName("SparkSqlToMysql")
.master("local")
.getOrCreate()//读取json/csv文件数据
val df = spark.read.json("data/user.json")
df.show()
val data: Array[Row] = df.collect()//创建数据库连接
val connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?characterEcoding=UTF-8",
"root", "000000")//声明执行的SQL
val statement = connection.prepareStatement("update user set name=?, password=?, imgUrl=?, update_date=? where id=?")//组装参数
val now: String = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now)
data.foreach(
u => {
// statement.setObject(sql参数占位符的位置, 样例类的属性)
statement.setObject(1, u.getString(2))
statement.setObject(2, u.getString(3))
statement.setObject(3, u.getString(4))
statement.setObject(4, now)
statement.setObject(5, u.getLong(0))
statement.addBatch() //批量执行
}
)//执行SQL
statement.executeBatch()spark.stop()
}
}
写入中文后有出现乱码'??'的情况, 有知道的大佬指点一下
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- R语言|R语言 函数
- linux|apt update和apt upgrade命令 - 有什么区别()
- 高效执行力第六课-小结
- 成功通航(用宜搭提升数字化管理效能,确保每次飞行任务安全执行)
- @逆战千锋|@逆战千锋 为什么sql语句执行之后表单中没有数据
- Spring|Spring Aop常见注解与执行顺序详解
- 什么叫思辨的执行
- 创建、执行存储过程