SparkSQL写入多种文件格式

大数据 同时被 2 个专栏收录
158 篇文章 1 订阅
35 篇文章 0 订阅

需求:

将数据库中的数据读取出来并以text  json  csv  parquet四种格式写入到本地文件或者hdfs中

csv格式:能够以excel的形式打开

 代码实现:

package cn.ysjh0014.SparkSql

import java.util.Properties

import org.apache.spark.sql._

object SparkSqlJdbc {

  def main(args: Array[String]): Unit = {

    val session: SparkSession = SparkSession.builder().appName("SparkSqlJdbc").master("local[1]").getOrCreate()

    import session.implicits._

    val resource: DataFrame = session.read.format("jdbc").options(
      Map("url" -> "jdbc:mysql://localhost:3306/lianxi?serverTimezone=GMT%2B8",
        "driver" -> "com.mysql.jdbc.Driver",
        "dbtable" -> "table1",
        "user" -> "root",
        "password" -> "root"
      )).load()

    //lambda表达式
    val r: Dataset[Row] = resource.where($"age" <= 15)
    val s: DataFrame = r.select($"id",$"name",$"age")

    val s: DataFrame = r.select($"name")

    //将查询到的数据再写入到数据库中
//    val props = new Properties()
//    props.put("user","root")
//    props.put("password","root")
//    s.write.mode("append").jdbc("jdbc:mysql://localhost:3306/bigdata?serverTimezone=GMT%2B8", "logs", props)

    s.write.text("D:\\测试数据\\text1")

    r.write.json("D:\\测试数据\\test")

    r.write.csv("D:\\测试数据\\test2")

    r.write.parquet("D:\\测试数据\\test3")


    session.close()

  }
}

注意:

以text格式写入的时候只能写入一列,并且是String类型的,否则会报错,因为写入的时候不仅写入的是数据,还会将schema信息写入,所以text格式的不能写入多列,写入一列默认是value,

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值