Да, к сожалению, нет полезного API, чтобы делать то, что вам нужно, хотя я попытался обойти, используя Scala groupBy
и mapGroupWithState
, например ::
val stream = ...
stream
.groupByKey(_.id)
.mapGroupsWithState(GroupStateTimeout.ProcessingTimeTimeout())(<function>)
и <function>
получат Iterator по вашим данным. Вы можете отсортировать и реализовать rank
, dense_rank
и т. Д.
Однако вы запросили окно без информации о ключе раздела (что приведет к проблемам с OOM для огромного объема данных), в этом случае вы можете добавить одинаковое значение для всех записей, используя withColumn
.
Примечание: вам не нужно сохранять состояние в GroupState
, вам просто нужен API, чтобы делать то, что вам нужно.
Надеюсь, это поможет!