有一个像这样的pyspark
data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.show()
+---+----+
| id|name|
+---+----+
| 1| a|
| 2| a|
| 3| b|
| 4| a|
+---+----+
按这个dataframe的名称列分组
df.groupBy("name").count().show()
+----+-----+
|name|count|
+----+-----+
| a| 3|
| b| 1|
+----+-----+
from pyspark.sql import functions as F
data = [("1", "a"), ("2", "a"), ("3", "b"), ("4", "a")]
df = spark.createDataFrame(data).toDF(*("id", "name"))
df.groupBy("name").count().where(F.col('count') < 3).show()
F是函数的别名,您可以使用任何需要的标识符,但它通常写为F或func,这只是个人习惯。
result:
+----+-----+
|name|count|
+----+-----+
| b| 1|
+----+-----+
# 可以多个列名同时使用groupby
duplicates_df = sc.sql(hive_read).groupBy("t", "g").count()
# 筛选出重复次数大于50的行
duplicates_df = duplicates_df.filter(duplicates_df["count"] > 50)
# 按照 count 列进行降序排序
sorted_duplicates_df = duplicates_df.orderBy(duplicates_df["count"].desc())
# 提取所有重复的t值,即满足上述重复条件的,发生过重复情况的t值
duplicate_tids = duplicates_df.select("t","g").distinct()
文章展示了如何在PySpark中对dataframe进行操作,包括根据name列分组并计算每组的数量,然后使用filter函数筛选出计数小于3的记录。此外,还提到了可以对多个列进行groupby操作,并通过SQL查询获取数据,进一步筛选重复次数超过50的行,最后提取出重复的t值。
6021

被折叠的 条评论
为什么被折叠?



