Spark 结构化流的分组和排序

问题描述 投票:0回答:1

我有一个用例,其中有手机号码、开始时间和通话持续时间等流数据集。 我需要对手机号码进行分组,并根据开始时间对组进行排序,并过滤掉总和(开始时间 + 持续时间)大于下一个总和(开始时间 + 持续时间)的呼叫

我尝试了 Window.partitionby("mobilenumber").orderby("starttime") 但后来发现它不适用于流数据集

apache-spark spark-structured-streaming spark-java
1个回答
0
投票

除非使用完整模式,否则这是不可能的。更具体地说:

仅在聚合后且处于完整输出模式下,流数据集才支持排序操作。

Spark 结构化流的基本原则是查询应该 在流式或批处理模式下返回相同的答案。我们支持排序 处于完整模式,因为我们拥有所有数据并且可以对其进行排序 正确并返回完整答案。在更新或追加模式下, 如果我们能保证的话,排序只会返回正确的答案 排序较低的记录将稍后到达(但我们不能)。 因此,这是不允许的。

写入表或 HDFS,然后写入具有可协助增量构建方面的物化视图的数据库。

© www.soinside.com 2019 - 2024. All rights reserved.