📅  最后修改于: 2023-12-03 15:33:55.747000             🧑  作者: Mango
PySpark是Spark的Python API,提供了一种快速执行数据分析任务的方法。本文将介绍PySpark中的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可用于汇总数据,而过滤函数可用于从数据帧中选择所需的数据。