参考 :
-- https://cloud.tencent.com/developer/article/1475487
先来回顾一下数据和对应的统计结果:
本文使用的是iris分类数据集,数据下载地址为:
下载后转换为xlsx格式的文件,数据如下:
对应的统计结果如下:
在介绍之前,我还是想先说明一点,这一篇只是想先带大家体验一把Spark SQL,相关更多关于原理相关的知识,咱们会在后面的文章中详细介绍。
1、数据导入
这里咱们通过读取Excel的方式读取出相应的数据,并得到一个DataFrame:
def createDFByCSV(spark:SparkSession) = {
val df = spark.sqlContext.read.format("com.databricks.spark.csv")
.option("header","true") //这里如果在csv第一行有属性的话,没有就是"false"
.option("inferSchema",true.toString)//这是自动推断属性列的数据类型。
.load("resources/iris.csv")
df.show()
}
结果如下:
2、使用Spark SQL计算统计值
2.1 最大值、最小值
使用Spark SQL统计最大值或者最小值,首先使用agg函数对数据进行聚合,这个函数一般配合group by使用,不使用group by的话就相当于对所有的数据进行聚合。
随后,直接使用max和min函数就可以,想要输出多个结果的话,中间用逗号分开,而使用as给聚合后的结果赋予一个列名,相当于sql中的as:
import spark.implicits._
df.agg(max($"feature1") as "max_feature1",
min($"feature2") as "min_feature2")
.show()
结果输出如下:
上面的$代表一列的意思,相当于col函数:
df.agg(max(col("feature1")) as "max_feat