Spark Structured Streaming 排名

Ranking in Spark Structured Streaming

我有一个由这样的数据组成的数据流。

{Student, Class, CurrentScore}

我想使用滑动window来计算这些事件的统计数据:

spark.readStream(...).withColumn("processingTime",..).
window(col("processingTime"), "30 minutes", "5 minutes"), col("class"))

但是现在我想在这个window中每个class拿出前3名的学生,但是Structured Streaming显然不支持rank()

我该如何解决这个问题?

流式数据集在聚合后和在完整输出模式下支持排序操作(还有 rank());直接来自手册。

然而,完全输出模式并不是一种现实的工作方式。我宁愿写到最终转换成柱状格式的位置,然后用合适的查询工具进行查询和排序。