我有一个用例,其中有手机号码、开始时间和通话持续时间等流数据集。 我需要对手机号码进行分组,并根据开始时间对组进行排序,并过滤掉总和(开始时间 + 持续时间)大于下一个总和(开始时间 + 持续时间)的呼叫
我尝试了 Window.partitionby("mobilenumber").orderby("starttime") 但后来发现它不适用于流数据集
除非使用完整模式,否则这是不可能的。更具体地说:
仅在聚合后且处于完整输出模式下,流数据集才支持排序操作。
Spark 结构化流的基本原则是查询应该 在流式或批处理模式下返回相同的答案。我们支持排序 处于完整模式,因为我们拥有所有数据并且可以对其进行排序 正确并返回完整答案。在更新或追加模式下, 如果我们能保证的话,排序只会返回正确的答案 排序较低的记录将稍后到达(但我们不能)。 因此,这是不允许的。
写入表或 HDFS,然后写入具有可协助增量构建方面的物化视图的数据库。