gpt4 book ai didi

scala - 增量数据如何使用Spark

转载 作者:行者123 更新时间:2023-12-03 21:24:15 24 4
gpt4 key购买 nike

我正在与 Spark (Scala) 合作执行每周发生的批处理。
每天,我们都有销售数据的每日提要,其架构如下:
日、产品、销售
每周,我们想导入该周的所有每日数据,汇总每日销售额以找到每种产品每周的平均销售额。然后我们导出一个带有以下标题的文件:
周、产品、销售额_平均值
(我们将其与之前的每周汇总合并)
这里的问题是我们可以收到更新 对于已经计算的聚合。例如,假设我们在第 1 周,并且我们已经计算了该周每个产品的每周平均值。
在接下来的一周(第 2 周),我可以收到每日销售行,其中 Day 列指的是前一周(第 1 周)而不是第 2 周。因此,相应产品的 Week1 已经计算的值不再准确,我们需要再次获取该周和该产品的所有每日数据并再次进行聚合。
最直接(也是最糟糕)的解决方案是每周只导入所有数据并计算所有聚合。这显然会导致性能瓶颈,尤其是我们正在处理 2 年的数据。我想做的是:

  • 计算当前(新周)的聚合(平均值)
  • 重新计算我们有更新的最后几周的聚合(不是所有数据:我们只会考虑有更新的那一周的每日数据)。

  • 我已经阅读了一些关于结构化流编程、时间窗口的内容,但我是 Spark 的新手,这一切都感觉有点复杂。
    因此,任何有关如何解决此问题的帮助将不胜感激。谢谢你。

    最佳答案

    对于基于结构化流的窗口策略的流聚合,以下内容可能会有所帮助:

    https://databricks.com/blog/2017/05/08/event-time-aggregation-watermarking-apache-sparks-structured-streaming.html

    关于scala - 增量数据如何使用Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464243/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com