我有一个每晚需要大约18个小时才能运行的过程。操作的要点是轮询上游服务,然后将数据应用到我自己的数据库 - 而不是1对1,但必要时进行按摩,比较和快照(因此有比较,以及其他的比较)将平面文件转换为关系结构所涉及的函数。)
上游已同意每晚向我们提供一份相当大的csv文件,缩短投票时间。
我正在考虑使用Spark / hdfs来分发这个夜间同步/合并的过程。但是我想知道如何最好地做到这一点?如果我经常查询它来比较,插入等等,我自己的数据库就会受到重创。
在这种情况下,最好的方法是什么?我曾考虑将自己的数据与上游数据一起下载到内存中以使比较更快,但随着这些数据库每月快速增长,我需要一种可扩展的方法。
答案 0 :(得分:0)
我的建议:
1,从大型CSV文件和数据库中提取主键,并将它们保存到分离的密钥文件K1,K2中;
2,内存中使用spark比较K1和K2并计算出K1组的插入/更新标志,输出为(k1,插入/更新标志);还更新K2以加快下一次计算;
3,使用优化方法插入/更新数据库。
比较过程(步骤2)对数据库非常消耗。将其移至大数据平台将缓解数据库压力。