ETL,数据搬迁。

实现ETL,首先要实现ETL转换的过程。体现为以下几个方面:

1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。

2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。

3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。

4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。

5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。

6、Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。

7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

以上内容来自百度百科。

ETL数据层模型。 核心为各个不同种类的数据库数据迁移。

ORACLE 同步至GREEPLUMN

        Oracle 迁移住Greeplumn  ,增量迁移方案为Oracle 抽取成数据文件采用sql。增量建采用本身系统中的tm_msp做增量采集。迁移工具。oracle端为sqlload ,gp端为 gpload 或gpfdist服务。

         sqlload 为oracle导出文件的高效工具。使用实例可自行百度。其中在jdbc连接时注意sid 和sname的区别 ,即 ip:1521:sid or ip:1521:sname。

        gpfdist中有一个 err_num的参数。可调整。指定 err条数范围,以及报错数据的入库记录数。

 ORACLE同步至HDFS(HIVE)

方案一:sqoop直接同步至hive库。脚本步骤如下

1,处理配置信息,参数信息,账期信息。

2,判断源端ORACLE表是否可采集状态(如无需判断可忽略此步骤)

3,采集同步开始-- 删除现有hive分区数据

4,执行sqoop脚本。

5,统计源端数据量 从采集脚本中 日志文件中获取。

6,统计hive端数据量。

7,比较数据量返回脚本结果值。

其中每一步需要进行错误判断处理,以及日志流程。

调优 1,sqoop 中 num-mappers 和sprit by参数 可多并发采集。 spritby字段尽可能的放在主键索引上。

调优2,查询ORACLE语句中尽可能使用ORACE查询较快的语句。比如分区,加ORACLE并发,走索引等等。

 

方案二:sqlload 抽取成文件后,hadoop fs -put至Hive库。

FILE同步至HDFS(HIVE)

步骤与sqoop步骤类似。 只是在 第四步需要分两步去做。

1,从源端采用sqlload抽取文件到本地服务器。抽取命令sqluldr2 ${ora_user}/"${ora_passwd}"@${ora_ip}/${ora_service} query="${query_sql}" file=${data_file}  field=${field_ter} head=no record="0x0a" charset="UTF-8" safe=yes 

2,hadoop -fs put 文件名称  hdfs路径

优化步骤:

1,ORCLE查询。同上

2,可以拆多个线程去生成文件后,Put进hdfs中。

SFTP文件同步至HIVE

同步步骤

1,处理配置信息,参数信息,账期信息。

2,判断文件服务器中文件与校验文件是否符合

3,采集同步开始-- 删除现有hive分区数据

4,执行hadoop fs -put 命令 

5,统计源端数据量 cat 文件名称 |wc-l 

6,统计hive端数据量。

7,比较数据量返回脚本结果值。

 

如采集问题可留言咨询。或联系QQ 1007300247。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值