Spark SparkSQL的数据加载和落地

1.数据的加载

使用read.load(path)

默认加载的是parquet格式的文件,如果需要加载其他类型的文件,需要通过format(类型)指定。当然,spark对一些主要格式的文件的加载都提供了更加简洁的API操作方式

加载json格式文件----要求文件的格式统一

spark.read.format("csv").load("file:///C:\\Users\\mycat\\Desktop/test.json")
//使用json函数
spark.read.json("file:///C:\\Users\\mycat\\Desktop/test.json")

加载普通文本文件

spark.read.format("text").load("file:///D://wordin/w1.txt")
//或者
spark.read.textFile("file:///D://wordin/w1.txt")

加载CSV格式文件

spark.read.format("csv").load("file:///D:\\soft\\databases\\powerdesign\\testdata/address.csv")
// 或者
spark.read.csv("file:///D:\\soft\\databases\\powerdesign\\testdata/address.csv")//.toDF("addressid","address")   // 可使用带参数toDF为对应的列重命名

加载ORC文件

spark.read.format("orc").load(“file:///D://test.orc”)
// 或者
spark.read.orc(“file:///D://test.orc”)

加载MySQL中的数据

val url="jdbc:mysql://localhost:3306/mktest"
val table="book"
val properties=new Properties()
properties.put("user","root")
properties.put("password","xxx")
val df = spark.read.jdbc(url,table,properties)
2.数据的落地------对DataFrame或者Dataset的操作

json格式文件

val spark=SparkSession.builder().appName("dfdemo")
  .master("local[*]")
  .getOrCreate()
val jdf = spark.read.json("file:///D://test/p1.json")

//写操作
jdf.write.format("json").save("ile:///D://test/p2.json")
// jdf.write.json("ile:///D://test/p2.json")

关于其他格式的文件,例如orc,parquet,csv等格式的格式数据的落地,与上雷同。

对于MySQL等关系型数据库的话,先来看看写入模式SaveMode

ErrorIfExists://默认,目录存在则报错
Append:追加模式,原有的基础上追加写入
Override:覆盖模式,覆盖原来的重写一份
Ignore:忽略本次写入模式
1)默认如果写入的表存在则报错
val url="jdbc:mysql://localhost:3306/mktest"
val table="book"
val properties=new Properties()
properties.put("user","root")
properties.put("password","miku")

mdf.write.jdbc(url,table,properties)
// 等同于 mdf.write.mode(SaveMode.ErrorIfExists).jdbc(url,table,properties)
2)追加写入到MySQL
val url="jdbc:mysql://localhost:3306/mktest"
val table="book"
val properties=new Properties()
properties.put("user","root")
properties.put("password","miku")

mdf.write.mode(SaveMode.Append).jdbc(url,table,properties)
3)覆盖写入到MySQL—覆盖原表中的数据
val url="jdbc:mysql://localhost:3306/mktest"
val table="book"
val properties=new Properties()
properties.put("user","root")
properties.put("password","miku")

mdf.write.mode(SaveMode.Override).jdbc(url,table,properties)
4)如果目标输出存在则忽略本次写入
val url="jdbc:mysql://localhost:3306/mktest"
val table="book"
val properties=new Properties()
properties.put("user","root")
properties.put("password","miku")

mdf.write.mode(SaveMode.Ignore).jdbc(url,table,properties)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值