在PySpark中,可以使用groupBy()函数按照数组中某个记录进行分组。以下是一个示例代码:
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据
data = [(1, ["A", "B"]), (2, ["A", "C"]), (3, ["B", "C"]), (4, ["A", "B", "C"])]
df = spark.createDataFrame(data, ["id", "records"])
# 按照数组中的第一个记录进行分组
grouped_df = df.groupBy(col("records").getItem(0).alias("group")).agg(collect_list("id").alias("ids"))
# 显示结果
grouped_df.show()
输出结果:
+-----+------+
|group| ids|
+-----+------+
| A|[1, 2, 4]|
| B|[1, 4]|
+-----+------+
在上述示例中,我们创建了一个包含id和records两个列的DataFrame。然后,我们使用groupBy()函数和getItem()函数来按照数组中的第一个记录进行分组。最后,我们使用agg()函数和collect_list()函数来聚合id列。
注意:在使用groupBy()函数时,需要使用getItem()函数来访问数组中的元素。