导入数据
- SparkSession的read属性中包含与一个DataFrameReader对象
- DataFrameReader中包含了读取个各种格式数据的方法
- 其中的
jdbc(uri: String, table: String, properties: Properties)
方法可以从mysql中读取表的数据并封装为DataFrame对象
- 其中的
//创建Properties对象,配置Mysql的密码和用户名
val properties = new Properties()
properties.setProperty("user", "username")
properties.setProperty("password", "password")
//调用SparkSession中的read属性的jdbc方法, 并传入uri,表名和Proerties对象
val df: DataFrame = session.read.jdbc("jdbc:mysql://地址:3306/数据库", "表名", properties)
导出数据
- DataFrame对象中的write属性包含一个DataFrameWriter对象
- 同样DataFrameWriter中包含了存储个各种格式数据的方法
- 其中的
jdbc(uri: String, table: String, properties: Properties)
可以将DataFrame中的数据存储到Mysql表中
- 其中的
//创建Properties对象,配置Mysql的密码和用户名
val properties = new Properties()
properties.setProperty("user", "username")
properties.setProperty("password", "password")
//调用df中的write属性的jdbc方法, 并传入uri,表名和Proerties对象
df.write.jdbc("jdbc:mysql://地址:3306/数据库", "表名", properties)
存储等级
-
当我们存储数据时,如果数据表已经存在了,那么Spark将会抛出异常,这时需要我们修改存储等级
在mode方法中传入对应的存储等级即可修改
//调用DataFrameWriter的mode方法,传入对应的存储等级,即可修改 df.write.mode(SaveMode.Append).jdbc("jdbc:mysql://地址:3306/数据库", "表名", properties)
存储等级 解释 SaveMode.ErrorIfExists 如果目标文件已经存在,则抛出异常(默认使用这个存储等级) SaveMode.Ignore 如果目标文件已经存在,则不做任何处理 SaveMode.Append 如果目标文件已经存在,则追加到文件中 SaveMode.Overwrite 如果目标文件已经存在,则覆盖文件