增量数据存储

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

我有时间序列每日数据,我运行模型。该模型在Spark中运行。

我只想每天运行模型,并将结果附加到历史结果中。拥有一个“合并的单一数据源”非常重要,其中包含要成功运行的模型的历史数据。

我必须使用AWS服务来存储结果。如果我存储在S3中,我将最终每天存储回填+ 1个文件(文件太多)。如果我存储在Redshift中,它不会合并+ upsert,因此变得复杂。面向客户的数据位于Redshift中,因此丢弃表并每天重新加载不是一种选择。

我不确定如何巧妙地(定义为最低成本和后续处理)存储增量数据,而无需每天重新处理所有内容以获取单个文件。

apache-spark amazon-s3 time-series amazon-redshift
2个回答
0
投票

S3仍然是你最好的投篮。由于您的工作似乎不需要以实时方式访问,因此它更像是滚动数据集。

如果您担心它生成的文件数量,您至少可以做两件事:

  1. S3对象生命周期管理您可以在x天后定义要删除的对象或转换到另一个存储类(更便宜)。更多例子:https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html
  2. S3通知基本上,您可以在S3存储桶中设置一个侦听器,“侦听”与指定前缀和后缀匹配的所有对象,以触发其他AWS服务。你可以做的一件简单的事情就是触发一个Lambda,进行处理然后你可以做任何你想做的事情。 https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html

只要有可能,就使用S3作为数据库。它太便宜了,它是AWS的支柱。


0
投票

您也可以切换到ETL。一个非常有效的,一个专门用于BigData的OpenSource,可完全自动化和易于使用的是Pentaho Data Integrator

它配备了现成的S3,Redshift(和其他)插件,只需一步即可与之前的值进行比较。根据我的经验,它运行得非常快。此外,它在夜间为你工作,并发送一个早上的邮件说每件事情都好(或不)。

主持人请注意:这是一个不可知的观点,我可以推荐许多其他观点,但是这个最适合OP的需求。

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