database - 快速从CSV对DB表进行数据同步

标签 database hadoop merge apache-spark

我有一个每晚运行大约18个小时的过程。该操作的要点是,对上游服务进行轮询,然后将数据应用于我自己的数据库-而不是一对一,而是在必要时进行按摩,比较和快照(因此进行了比较,还有其他一些将平面文件转换为关系结构所涉及的功能)。

上游已同意每晚向我们提供一个单独的,相当大的csv文件,以减少轮询时间。

我正在考虑使用Spark / hdfs分发每晚同步/合并的过程。但是我想知道如何最好地做到这一点?因为如果我经常查询数据库以进行比较,插入等,我的数据库将受到重创。

在这种情况下最好的方法是什么?我曾考虑过将自己的数据与上游数据一起下载到内存中,以使比较更快,但是由于这些数据库每月都在快速增长,因此我需要一种可扩展的方法。

最佳答案

我的建议:
1,从大型CSV文件和数据库中提取主键,并将它们保存到单独的键文件K1,K2中;
2,在内存中使用spark比较K1和K2,并计算出K1置位的插入/更新标志,输出为(k1,插入/更新标志);还更新K2以加快下一次计算;
3,以优化的方式插入/更新数据库。

比较过程(第2步)非常消耗数据库资源。将其移至大数据平台将减轻数据库压力。

关于database - 快速从CSV对DB表进行数据同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248618/

相关文章:

database - OpenX 升级导致插件错误

hadoop - 如何在Hive中以纪元小时向表添加分区?

exception-handling - 如何处理在 map/reduce 期间死亡的数据节点

hadoop - Sqoop 函数 '--map-column-hive' 被忽略

linux - 什么 git 操作将我的更改从内核 3.14.y 移植到 3.15.y?

sql-server - 如何加快从大型数据库表中删除的速度?

mysql - 努力找出关于外键引用的 MySQL create table 语句的语法错误

sql - 在pyspark中实现MERGE INTO sql

python - 如何以编程方式合并具有潜在冲突的文本文件(ala git 或 svn 等)?

sql - 向新创建的用户授予权限的 DDL 触发器