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) }