新手速学之spark快速读写mysql以及解决中文乱码问题

1.spark快速读取mysql

val spark = SparkSession.builder.appName("bidInfo").getOrCreate()
val sc = spark.sparkContext
val properties = new Properties()
properties.put("user","root")
properties.put("password","root")
val url = "jdbc:mysql://localhost:3306/dbname"  //
val DF = spark.read.jdbc(url,"tableName",properties)
得出的DF就是dataframe格式的数据库内容。

2.如果数据库中存在中文此时需要将url写成下面的形式

val url = "jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8"  //
3.将dataframe写入mysql

/**
  * 写入mysql数据库
  * AnalysisException: path file:/E:/test/spark/sql/out/person.txt already exists.
  * 如果多次向通过一个目录中输出计算结果,有可能导致org.apache.spark.sql.AnalysisException异常---> path already exists
  * 这里就涉及到了save的保存模式
  *
  * SaveMode.ErrorIfExist ----->default 文件存在,保存失败,有异常, path already exists
  * SaveMode.Append      ----->append   在现有的基础之上追加新的数据
  * SaveMode.Overwrite   ----->overwrite 现有目录已经存在,删除之,后建之
  * SaveMode.Ignore      ----->ignore    忽略当前的保存操作,啥事没干
  * 具体设置的话,使用mode()方法进行设置
  */
def wrToMySql(stud_scoreDF: DataFrame, url: String, properties: Properties): Unit ={
  stud_scoreDF.write.mode(SaveMode.Overwrite).jdbc(url,"table_name",properties)
}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值