我有时间序列的每日数据,可以对其进行模型分析。该模型在Spark中运行。
我只想每天运行一次模型,并将结果附加到历史结果中。重要的是拥有一个包含历史数据的“合并的单个数据源”,以使模型成功运行。
我必须使用AWS服务来存储结果。如果我将其存储在S3中,则最终将每天存储回填+ 1个文件(文件太多)。如果我存储在Redshift中,它不会合并+ upsert,因此变得很复杂。面向客户的数据位于Redshift中,因此不能删除表并每天重新加载。
我不确定如何巧妙地(定义为最低成本和后续处理)来存储增量数据,而不必每天重新处理所有内容以获得单个文件。
答案 0 :(得分:0)
S3仍然是您的最佳选择。由于您的工作似乎不需要实时访问,因此它更多的是滚动数据集。
如果您担心它生成的文件数量,则至少可以做两件事:
S3对象生命周期管理 您可以定义要删除的对象,或者在x天后过渡到另一个存储类(廉价)。 更多示例:https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html
S3通知 基本上,您可以在S3存储桶中设置一个侦听器,“侦听”与您指定的前缀和后缀匹配的所有对象,以触发其他AWS服务。您可以做的一件简单的事情就是触发Lambda,进行处理,然后您就可以做任何想做的事情。 https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html
尽可能使用S3作为数据库。这太便宜了,它是AWS的骨干。
答案 1 :(得分:0)
您还可以切换到ETL。 Pentaho Data Integrator是一种非常有效的开放源代码,专用于BigData,完全自动化且易于使用,它是。
它配备了适用于S3,Redshift(及其他)的现成插件,只需一步即可与以前的值进行比较。根据我的经验,它运行非常快。另外,它在晚上为您工作,并向您发送一封早晨邮件,告诉您一切正常(或不正常)。
主持人注意:这是一个不可知论的观点,我本来可以推荐许多其他观点,但是这一观点最符合OP的需要。