我有时间序列每日数据,我运行模型。该模型在Spark中运行。
我只想每天运行模型,并将结果附加到历史结果中。拥有一个“合并的单一数据源”非常重要,其中包含要成功运行的模型的历史数据。
我必须使用AWS服务来存储结果。如果我存储在S3中,我将最终每天存储回填+ 1个文件(文件太多)。如果我存储在Redshift中,它不会合并+ upsert,因此变得复杂。面向客户的数据位于Redshift中,因此丢弃表并每天重新加载不是一种选择。
我不确定如何巧妙地(定义为最低成本和后续处理)存储增量数据,而无需每天重新处理所有内容以获取单个文件。
S3仍然是你最好的投篮。由于您的工作似乎不需要以实时方式访问,因此它更像是滚动数据集。
如果您担心它生成的文件数量,您至少可以做两件事:
只要有可能,就使用S3作为数据库。它太便宜了,它是AWS的支柱。
您也可以切换到ETL。一个非常有效的,一个专门用于BigData的OpenSource,可完全自动化和易于使用的是Pentaho Data Integrator。
它配备了现成的S3,Redshift(和其他)插件,只需一步即可与之前的值进行比较。根据我的经验,它运行得非常快。此外,它在夜间为你工作,并发送一个早上的邮件说每件事情都好(或不)。
主持人请注意:这是一个不可知的观点,我可以推荐许多其他观点,但是这个最适合OP的需求。