📜  PySpark 中的 GroupBy 和过滤数据(1)

📅  最后修改于: 2023-12-03 15:33:55.747000             🧑  作者: Mango

PySpark 中的 GroupBy 和过滤数据

PySpark是Spark的Python API,提供了一种快速执行数据分析任务的方法。本文将介绍PySpark中的GroupBy和过滤数据的方法。

GroupBy

GroupBy是一种聚合数据的方法,它从一个数据集中生成分组的汇总信息。在PySpark中,可以使用groupBy()函数实现。

以下是一个示例代码,说明如何使用groupBy()函数在PySpark中进行分组:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("GroupByExample").getOrCreate()

data = [("Alice", 25), ("Bob", 30), ("Charlie", 35), ("Alice", 35), ("Bob", 40)]

df = spark.createDataFrame(data, ["Name", "Age"])
df.show()

groupByDF = df.groupBy("Name").sum()
groupByDF.show()

在这个示例中,我们首先使用SparkSession创建一个Spark应用程序。然后,我们定义一个包含名称和年龄的Python数组,并将其转换为PySpark数据帧。然后,我们使用groupBy()函数来按姓名分组,并使用sum()函数计算每个姓名的总年龄。

输出:

+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 25|
|    Bob| 30|
|Charlie| 35|
|  Alice| 35|
|    Bob| 40|
+-------+---+

+-------+--------+
|   Name|sum(Age)|
+-------+--------+
|  Alice|      60|
|Charlie|      35|
|    Bob|      70|
+-------+--------+
过滤数据

在PySpark中,可以使用where()或filter()函数在数据帧中过滤数据。以下是使用where()函数过滤数据的示例代码:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("FilterExample").getOrCreate()

data = [("Alice", 25), ("Bob", 30), ("Charlie", 35), ("Alice", 35), ("Bob", 40)]

df = spark.createDataFrame(data, ["Name", "Age"])
df.show()

filterDF = df.where(df.Age > 30)
filterDF.show()

在这个示例中,我们使用SparkSession创建一个Spark应用程序。然后,我们定义一个包含名称和年龄的Python数组,并将其转换为PySpark数据帧。然后,我们使用where()函数来过滤那些年龄大于30岁的人的数据。

输出:

+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 25|
|    Bob| 30|
|Charlie| 35|
|  Alice| 35|
|    Bob| 40|
+-------+---+

+-----+---+
| Name|Age|
+-----+---+
|  Bob| 40|
|Alice| 35|
|Charlie| 35|
+-----+---+
总结

本文介绍了PySpark中的GroupBy和过滤数据方法,这些方法可以帮助快速处理和分析大规模数据集。GroupBy可用于汇总数据,而过滤函数可用于从数据帧中选择所需的数据。