spark 写mysql 设置主键_spark写入mysql

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:20   2125   0

private def singleDataSaveMysql(sql: String) ={

val dataFrame2: DataFrame=ss.sql(sql)

val resultRDD=df2rdd(dataFrame2)

val value: RDD[Map[String, Map[String, Map[String, String]]]]= resultRDD.map(diagLis =>{var diagLisMap: Map[String, Map[String, Map[String, String]]] =Map()

val diag: String=diagLis._1

val lisText: String=diagLis._2if (!diagLisMap.contains(diag)) {//用空行分割字符串

val itemResults: Array[String] = lisText.split("(\n|\r\n)\\s+")var itemSpecial: Map[String, Map[String, String]] =Map()for (i

val split1: Array[String]= itemResults(i).split("\n")var item: String = ""

var special: Map[String, String] =Map()if (split1.length > 1) for (j

item= split1(j).replaceAll("【下沙】", "")

}else{

val splits: Array[String]= split1(j).split("\t")if (splits.length > 2) {

val spell: String= splits(0).split(":")(0)

val betw: String= splits(1)

special+= (spell ->betw)

}

}

itemSpecial+= (item ->special)

}

}

diagLisMap+= (diag ->itemSpecial)

}

diagLisMap

})

val driver= "com.mysql.jdbc.Driver"val url= "jdbc:mysql://192.168.21.2351:3306/diagbot-app?useSSL=false"val username= "root"val password= "diagbot@20180822kwz"Class.forName(driver)//遍历测试

value.foreachPartition(l =>{

@transientvar connectionMqcrm =DriverManager.getConnection(url, username, password)

l.foreach(m =>{for (k

val diag: String=k._1

val iteamSpecal: Map[String, Map[String, String]]=k._2for (l

val iteam: String= l._1.toString().replace(":", "") //大项

val specails: Map[String, String] =l._2for (spe

val it: String=spe._1

val bet: String=spe._2

println(diag+ "\t" + iteam + "\t" + it + "\t" +bet)

val sql= "insert into doc_diag_lises(diag,iteam,it,bet) values ('" + diag + "','" + iteam + "','" + it + "','" + bet + "')"val statement: Statement=connectionMqcrm.createStatement()

statement.executeUpdate(sql)

}

}

}

})

connectionMqcrm.close()

})

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP