新手速学之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)
}

你可能感兴趣的:(大数据技术)