使用SparkSql从Mysql中导入导出数据

导入数据

  • 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如果目标文件已经存在,则覆盖文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值