有 200 多个数据库,数据结构大部分一致,SQLServer 和 Oracle 居多,需要采集交易数据到大数据平台,要保证数据准确性,实时性要求不高,大家有什么稳妥的方案?
1
noNOno 2017-08-21 17:27:31 +08:00
不知道数据量如何,实时性要求不高,写 ETL 脚本,离线处理调度呗
|
2
gouchaoer 2017-08-21 17:30:39 +08:00
你这个需要每天增量备份么,不需要的话用 sqoop 之类的吧
|
3
gouchaoer 2017-08-21 17:32:22 +08:00
需要增量备份的话,你是导入 hive 还是 hbase 之类的呢,我的方案是写脚本每天去数据库查询导出成 text 文本,然后脚本再调用 hive 命令行导入 hive
|
4
gouchaoer 2017-08-21 17:33:11 +08:00
|
5
noNOno 2017-08-21 17:34:10 +08:00
数据接入可以用 hbase 集成 hive。我现在数据处理都是先存入 hbase,然后每日处理,持久化到 hive
|
6
curran12 OP @gouchaoer 既然采集肯定要入仓的,我觉得考虑的地方有几个点:
1、网络稳定性:分为 200 多个库的出口和数据平台入口,200 多个库分布在全国各地,一般都在内网,需要走网络映射,不能保证每次抽取出口网络都正常,而且调度时太大的流量会对数据平台入口网络照成影响,这个需要了解每个库的数据增量来安排调度。 2、某个库采集任务失败后要保证最终采集的数据准确,而且这么多表不可能每天都盯着,需要失败后自动重试 |
7
gouchaoer 2017-08-21 17:57:55 +08:00
@curran12 这 2 个需求都不是问题,你应该是每天增量备份的吧,那我这个方法增量备份有个问题就是需要一个自增的 int 的主键,否则你每天增量备份都不知道从哪一行开始读。。。。我也有意写个 php 工具开源出来,sqoop 太难用了
|
8
momo4tg 2017-08-21 18:23:57 +08:00
我觉得 hbase 可以作为一个数据备份,先把数据存在 hdfs 中,通过 spark 去重,计算得到的结果再存入 hbase,保证 hbase 里面的数据已经是干净准确的,再根据需要持久化到另外一个库中,比如某个 OLAP 的数据库。楼上说的每天增量备份都不知道从哪一行开始读,你按天增量,计算的时候去重就好了啊,我之前做的一个数据仓库因为主要是各个系统的订单数据,很多都是 T+1 会有更新的,所以 我都是每天读取 D-3 的数据,然后用 spark 作计算的
|
9
badttt 2017-08-21 22:09:18 +08:00 via iPhone
阿里的 DataX
|