PySpark 分组与聚合函数应用

在处理大数据时,将数据分组是一个基本且重要的技能。特别是当处理大量数据时,如果不能将数据分段,那么分析和进一步使用数据以提取商业洞察将变得更加困难。聚合函数与分组函数紧密相连,不能在没有聚合函数(如SUM、COUNT、AVG、MAX、MIN等)的情况下使用groupBy。

开始Spark会话

在本节中,将建立与Apache Spark的PySpark连接,并读取将在其上应用聚合和分组操作的数据集。

from pyspark.sql import SparkSession spark_aggregate = SparkSession.builder.appName('Aggregate and GroupBy').getOrCreate()

简而言之,从pyspark.sql包中导入了SparkSession,并使用getOrCreate()函数创建了SparkSession。

读取数据集

在这里,将读取虚拟数据集,将在该数据集上执行GroupBy和Aggregate函数。

spark_aggregate_data = spark_aggregate.read.csv('/content/part4.csv', header=True, inferSchema=True) spark_aggregate_data.show()

已经成功读取了虚拟数据集,并借助show函数,可以看到DataFrame。

查看数据集结构

将检查表/数据集的结构,看看每个列包含什么类型的数据。

spark_aggregate_data.printSchema()

在使用printSchema()函数后,可以看到每个列的数据类型。

分组操作

现在让深入博客的主要话题,将从执行一些分组操作开始,这在需要将大数据分组到更小的块时非常有用。

spark_aggregate_data.groupBy('Name')

在上面的代码中,使用了GroupBy()函数,特别是使用Name列进行分组。

聚合函数

已经讨论了一些常用的聚合函数,现在将实现其中的一些,并看看它们将返回什么样的结果。

将讨论“Name”参数的GroupBy函数,并看看它在处理求和方法时的实用性。

spark_aggregate_data.groupBy('Name').sum().show()

在上面的输出中,很明显Name列已经与salary列的总和一起分组

通过按“部门”列分组并使用sum聚合函数,可以找出哪个部门提供最高的薪水。

spark_aggregate_data.groupBy('Departments').sum().show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485