spark 写mysql 设置主键_spark写入mysql

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值