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)