我每天晚上都要花18个小时。该操作的要点是轮询一个上游服务,然后将数据应用到我自己的数据库中—不是1对1,而是在必要时进行处理、比较和快照(因此,在将平面文件转换为关系结构的过程中会涉及比较和其他一些函数)。
上游已经同意提供一个单一的,相当大的csv文件,每晚我们,削减了投票时间。
我正在考虑使用spark/hdfs来分发这个每晚同步/合并的过程。但是我想知道如何最好地做到这一点?因为我自己的数据库,如果我经常查询比较,插入等,会受到重创。
在这种情况下,最好的方法是什么?我曾考虑过将自己的数据与上游数据一起下载到内存中,以便更快地进行比较,但随着这些数据库每月快速增长,我需要一种可扩展的方法。
1条答案
按热度按时间o75abkj41#
我的建议是:
1、从大的csv文件和数据库中提取主键,保存到单独的密钥文件k1、k2中;
2、内存中使用spark比较k1和k2,计算出k1集合的插入/更新标志,输出为(k1,插入/更新标志);同时更新k2以加速下一步计算;
用优化的方法插入/更新数据库。
比较过程(步骤2)对于数据库来说非常消耗资源。将其转移到大数据平台将减轻数据库压力。