一、概述
Spark SQL重要的是操作DataFrame,DataFrame本身提供了Save和Load的操作,
Load:可以创建DataFrame。
Save:把DataFrame中的数据保存到文件或者说用具体的格式来指明我们要读取的文件类型,以及用具体的格式来指出我们要输出的文件是什么类型。
DataFrame本质是数据 + 数据的描述信息(结构元信息)。
二、DataFrame的创建
(1)创建SparkSession对象
val spark = SparkSession.builder().getOrCreate()//spark-shell默认提供了
(2)导入实现隐式转换的数据包
import spark.implicits._
(3)从不同类型文件中加载数据创建DataFrame
spark.read.format("json").load("people.json")
spark.read.format("csv").load("people.csv")
spark.read.format("parquet").load("people.parquet")
三、DataFrame的保存
df.write.format("json").save("people.json")
df.write.format("csv").save("people.csv")
df.write.format("parquet").save("people.parquet")
四、DataFrame常用操作
//读取json文件
val df=sqlContext.read.json("hdfs://localhost:9000/myspark6/goods_visit.json")
//查看文件中所有数据
df.show()
//查看表结构
df.printSchema()
//只查看商品ID(goods_id)
df.select("goods_id").show()
//统计文件行数
df.count
//条件查询,查询点击次数超过500的商品(show是返回字段和表数据,collect是返回集合)
df.filter(df("click_num")>500).show
//统计点击次数的最值,总和,平均数
df.agg(max("click_num"),sum("click_num"),min("click_num"),avg("click_num")).show
//按点击次数分组统计
df.groupBy("click_num").count().show()
//读取json文件,保存为parquet格式
val df = sqlContext.read.format("json").load("hdfs://localhost:9000/myspark6/goods_visit.json")
df.select("goods_id", "click_num").write.format("parquet").save("goods_visit.parquet")