Spark-Datasource-API操作

10 篇文章 0 订阅

Spark-Datasource-API操作

1.text数据源读写操作

写操作时应用mode(“overwritew”)函数,表示如果目标文件夹已存在,那么会覆盖,详情见2

def text(spark: SparkSession): Unit ={
	//隐式转换
    import spark.implicits._
    //读操作
    val df: DataFrame = spark.read.text("file://..")
	
    val ds: Dataset[(String,Int)] = df.map(x => {
      val splits: Array[String] = x.getString(0).split(",")
      (splits(0).trim,splits(1).trim.toInt)
    })
	//写操作
    ds.write.mode("overwrite").save("out")
  }

2.SaveMode使用详情

在写操作的使用调用mode()函数详情如下
1.Append

ds.write.mode("append").save("out")

表示如果目标已存在,那么会追加
2.Overwrtse

ds.write.mode("overwrite").save("out")

表示如果目标已存在,那么会覆盖
1.ErrorIfExists

ds.write.mode("error").save("out")

表示如果目标已存在,那么会报错,这是默认选项
1.Ignore

ds.write.mode("ignore").save("out")

表示如果目标已存在,那么会忽略

3.josn数据源读写操作

def json(spark: SparkSession): Unit ={
	//隐式转换
    import spark.implicits._
    val df: DataFrame = spark.read.json("file://..")
    //分别取出字段并别名,保存
    df.select($"age".as("a"),$"name".as("n"),$"info.add".as("add"),$"info.home".as("home")).write.mode("overwrite").json("out")

  }

4.数据源操作标准写法

1.读操作:

读取text

val text: DataFrame = spark.read.format("text").load("file://..")

读取json

val json: DataFrame = spark.read.format("json").load("file://..")

2.写操作
保存text

text.write.format("text").save("out")

保存json

text.write.format("json").save("out")

5.Parquet数据源读写操作

Parquet是一种列式存储格式

def parquet(spark: SparkSession) = {
	//隐式转换
    import spark.implicits._
    //读操作
    val df: DataFrame = spark.read.parquet("file:///home/hadoop/IdeaProjects/sparksql-train/data/users.parquet")
    df.select("name","favorite_color").write.mode("overwrite").format("parquet").option("compression","none").save("out")
    //写操作
    spark.read.parquet("file:///home/hadoop/IdeaProjects/sparksql-train/out").show()

  }

6.Datasource格式转换

def convert(spark: SparkSession): Unit ={
	//隐式转换
    import spark.implicits._
    //读取一个json文件
    val df: DataFrame = spark.read.json("file:///home/hadoop/IdeaProjects/sparksql-train/data/people2.json")
    //写成一个parquet文件
    df.write.mode("overwrite").format("parquet").save("out")
    //测试
    spark.read.parquet("file:///home/hadoop/IdeaProjects/sparksql-train/out").show()

  }

7.JDBC数据源操作

我们这里以读取mysql数据源为例,
在这里插入图片描述

def jdbc(spark: SparkSession): Unit ={
	隐式转换
    import spark.implicits._
    //定义一个properties 
    val properties = new Properties()
    //设置账号
    properties.put("user","root")
    //设置密码
    properties.put("password","root")
    //三个参数,分别为:url,库名.表名,一个properties配置
    val df: DataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306","spark.a",properties)

   	df.show()
   	//写操作
    df.write.mode(SaveMode.Append).jdbc("jdbc:mysql://192.168.0.133:3306","spark.b",properties)

  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值