指的是和第三方存储系统的读写操作
JSON
val df = spark.read.json("file:///G:\\IDEA_WorkSpace\\scala-workspace\\spark-day9\\src\\main\\resources")
df.createTempView("t_user")
spark.sql("select id,name from t_user").write.format("json").save("file:///D://result")
Paquet
基于列式存储的文件格式,底层会将数据编码成二进制数据
【默认】
// 读parquet文件内容 创建df
val df = spark.read.parquet("file:///D://result2")
// 写出parquet文件格式
spark.sql("select id,name from t_user").write.save("file:///D://result2")
ORC
矢量化文件格式,比较节省磁盘空间
// 写出orc文件格式
spark.sql("select * from t_user").write.orc("file:///d://result3")
// 读orc文件内容 创建df
val df = spark.read.orc("file:///D://result3")
CSV
// 写出CSV文件格式
df.write
.format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "true")
.save("file:///D://result4")
// 读csv文件内容 创建df
val df = spark.read
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "true")
.csv("file:///d://result4")
JDBC
// 写出JDBC Mysql数据库中
spark
.sql("SELECT * FROM t_user")
.write
.format("jdbc")
.mode(SaveMode.Overwrite) // 覆盖
.option("user", "root")
.option("password", "1234")
.option("url", "jdbc:mysql://hadoopnode00:3306/test")
.option("dbtable", "t_user")
.save()
// 读JDBC Mysql中数据,创建DF
val df = spark
.read
.format("jdbc")
.option("user", "root")
.option("password", "1234")
.option("url", "jdbc:mysql://hadoopnode00:3306/test")
.option("dbtable", "t_user").load()
DF转RDD
// df转rdd
df.rdd.foreach(row => {
println(row.getInt(0) + "\t" + row.getString(1)) // row中获取元素的方法 内容为下标
})
总结:Spark SQL 建立在SparkRDD基础之上的一个通过SQL语法进行计算的引擎工具