开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:聚合操作_多维聚合_需求介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/690/detail/12088
聚合操作_多维聚合_需求介绍
多维聚合
Rollup 和 cube 是多维度聚合,而 groupBy 是单维聚合。
多维聚合:比如在打游戏时,有大招数和小招数之分,多维聚合就可以认为是大招数,而单维聚合就是小招数。多维聚合比较少见,因为其适用的场景较少。
本节课内容是介绍多维聚合是什么、怎样使用普通的 SparkSQL 代码完成多维聚合。介绍多维聚合是什么,首先要读取数据集。
针对数据进行多维的聚合,也就是一次性统计小计,总计等,一般的思路如下:
Step1:读取数据集
将名称为 pm_final.csv 的文件拷贝到 saprkdataset 目录下
创建方法 multiAgg():ynit = {
@Test
def multiAgg() : unit = {
val schemaFinal = StructType(
List(
注:比之前代码多了 StructField( "source" , StringType)一列
StructField( "source" , StringType) ,
structField ( " year" , IntegerType) ,
structField ( " month" , IntegerType) ,
StructField ( "day" , IntegerType) ,
structField ( "hour" , IntegerType) ,
StructField ( "season" , IntegerType) ,
StructField ( "pm” , DoubleType)
)
)
val pmFinal = spark.read
.schema ( schemaFinal)
.option ( "header" , value = true)
.csvtcataset/pm_final.csv")
数据集读取之后打印数据集
pmFinal.show()
}
运行并查看结果:
数据集当中多出 source 一列,是用于统计 PM 值的来源,数据集当中可能存在一个时间统计的 PM 值有两个来源。
下面根据数据集提出如下需求:
需求 1:不同来源 PM 的统计
需求 2:在同一个月,不同来源的 PM 值的平均值是多少
需求 3:同一年,不同来源的 PM 值平均是多少
需求 4:整体上来看,不同来源的 PM 值是多少
多维操作就是在一个结果集中,包含小计,总计,一层层进行聚合就是多维聚合。