【发布时间】:2019-04-03 09:13:11
【问题描述】:
我有以下火花数据框:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('').getOrCreate()
df = spark.createDataFrame([(1, "a", "2"), (2, "b", "2"),(3, "c", "2"), (4, "d", "2"),
(5, "b", "3"), (6, "b", "3"),(7, "c", "2")], ["nr", "column2", "quant"])
返回我:
+---+-------+------+
| nr|column2|quant |
+---+-------+------+
| 1| a| 2|
| 2| b| 2|
| 3| c| 2|
| 4| d| 2|
| 5| b| 3|
| 6| b| 3|
| 7| c| 2|
+---+-------+------+
我想检索每 3 个分组行(从窗口大小为 3 的每个窗口)中 quant 列具有唯一值的行。如下图:
这里红色是窗口大小,每个窗口我只保留 quant 唯一的绿色行:
我想得到的输出如下:
+---+-------+------+
| nr|column2|values|
+---+-------+------+
| 1| a| 2|
| 4| d| 2|
| 5| b| 3|
| 7| c| 2|
+---+-------+------+
我是 Spark 的新手,所以我将不胜感激。谢谢
【问题讨论】:
-
你如何创建你的红色组?你的分组条件是什么?
-
前3行为一组,后3行为下一组
-
第一次按什么排序?
-
从顶部开始。数据集已经排序。只是前 3 行是一组,然后下 3 行是下一组。它应该滚动
-
分布式文件系统或数据库中没有任何内容已排序。它就像一袋弹珠,你可以把它们从袋子里分出来,但不能在里面。
标签: python group-by pyspark apache-spark-sql window