我有一个由这样的数据组成的数据流。
{Student, Class, CurrentScore}
我想使用滑动窗口来计算这些事件的统计:
spark.readStream(...).withColumn("processingTime",..).
window(col("processingTime"), "30 minutes", "5 minutes"), col("class"))
但是现在我想在这个窗口中按每个班级选出前3名的学生,但是结构化流显然不支持 rank()
我怎样才能解决这个问题?
1条答案
按热度按时间kqqjbcuj1#
排序操作(也叫rank())仅在聚合后和完全输出模式下才支持流式数据集;直接从手册上。
然而,完全输出模式并不是一种现实的工作方式。我宁愿写到一个最终转换为列格式的位置,然后使用适当的查询工具进行查询和排序。