我们在大数据进行数据抽取(入湖)中离不开从源系统的数据库同步数据到大数据平台(hive)中。我的平台(带有调度工具):联想大数据平(LeapHD)。

同步的方式有两种:

1.增量抽取:即每次抽取表的全部数据然后覆盖表的全部数据。频率一般每天抽取或者每周每月抽取,具体看业务需求。

1.1在hive中建一张结构与源表的相同表
eg:
源表(mysql)的结构:
表名:user 字段为:user_id int,user_name varchar,create_time datetime,phone varchar ;
hive建表:

create table ods.user_id (
etl_date string COMMENT '入湖时间',
user_id string COMMENT '客户id',
user_name string COMMENT '客户姓名',
create_time string COMMENT '创建时间',
phone string COMMENT '电话'
)comment '客户信息表'
row format delimited fields terminated by '\001' --换行方式

1.2 同步 用sqoop 或者用kettle工具同步。我用的是联想平台的自带的etl工具。

抽取全量的源表,进行任务调度的设置,是每天或者每周每月(看业务需求)。

select
'${now}' etl_time,
user_id ,
user_name ,
create_time ,
phone
from dd.user

导入到创建的hive表

ods.user_id

2.增量导入

增量方式的话我处理的方法是创建分区表,按照同步方式建立相应的分区。比如在单表数据量较大(比如:100万以上)的我会按照日分区,数据量较小的按照月分区。

2.1日分区

2.1.1 创建日分区表

create table ods.user_id (
etl_date string COMMENT '入湖时间',
user_id string COMMENT '客户id',
user_name string COMMENT '客户姓名',
create_time string COMMENT '创建时间',
phone string COMMENT '电话'
)comment '客户信息表'
partitioned by (day_id string comment '日分区')
row format delimited fields terminated by '\001' --换行方式

2.1.2 进行表的初始化数据(跟全量的操作差不多,多了分区)

全量抽取

select
'${now}' etl_time,
user_id ,
user_name ,
create_time ,
phone
from dd.user

导入到创建的hive表指定临时分区

ods.user_id[day_id='1']

2.1.3 将临时分区导入到动态分区

insert overwrite table ods.user_id partition(day_id)
select
etl_time ,
user_id ,
user_name ,
create_time ,
phone ,
substr(create_time,1,10) as day_id --日期格式为 YYYY-MM-DD
from ods.user_id partition
where day_id='1'

2.1.4 删除表的临时分区

alter table ods.user_id drop partition (day_id='1');

2.1.5 完成初始化后就是增量导入增量数据

设置把昨天的日期设置成变量:{last_day} = {now} - 1

抽取昨天的数据

select
'${now}' etl_time ,
user_id ,
user_name ,
create_time ,
phone
from dd.user
where substr(create_time,1,10)='{last_day}'

同理,抽数放到临时分区

ods.user_id[day_id='000']

2.1.6 将临时分区换成动态分区

insert overwrite table ods.user_id partition(day_id)
select
etl_time ,
user_id ,
user_name ,
create_time ,
phone ,
substr(create_time,1,10) as day_id --日期格式为 YYYY-MM-DD
from ods.user_id partition
where day_id='000'

2.1.7 删除临时分区

alter table ods.user_id drop partition (day_id='000');

这样就完成每天的抽数定时任务。

etl全量增量抽取方式相关推荐

  1. mysqldump备份(全量+增量)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备 ...

  2. “全量增量” 与 “增量同步” 一文了解清楚【建议收藏】

    大家在同步数据的时候都会接触到2个名词,"全量增量" 与 "增量同步" ,名字都长得差不多,但是意思和操作却不一样:比如部门领导给你方案,那我们要如何去选择其中 ...

  3. 331全量增量数据、同步ld

    -- 数据同步 1 全量数据同步 1.1 不带参数的实现方式 每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 . 1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式 ...

  4. MySQL数据库之全量+增量+二进制日志的备份与恢复

    一.简介数据的备份与恢复 1.为什么备份? 灾难恢复:人为错误.硬件故障(冗余).软件故障(bug).自然灾害.黑客攻击.误操作.-: 测试: 2.备份时应该注意些什么? 能容忍最多丢失多少数据: 恢 ...

  5. mysqldump全量恢复_【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  6. Elasticsearch和MySQL数据同步(logstash-input-jdbc)全量增量方式同步近千万数据

    同步方案: 同步读写:最为简单的方式在将数据写到mysql时,同时将数据写到ES,实现数据的双写. 异步双写(MQ方式):MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高. 定时器 ...

  7. oracle全表增量抽取,每日数据增量抽取问题讨论

    每日数据增量抽取问题讨论[@more@]咨询各位高人. 目前状况是 我单位每天都要产生 一个单品资料的基础表, 是所有单品,大约5万条数据 ,但是每天这个表都有多少改变,比如:有些单品更新,有一些删除 ...

  8. 一个脚本实现全量增量备份,并推送到远端备份中心服务器

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 由于工作需要,刚好需要这样一个功能的脚本,主要解决: 1. 不想在crontab中调度两条备份任务,一个做全量一个做增量 ...

  9. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  10. Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

最新文章

  1. 综述 | 图像去噪方法比较
  2. [Vue CLI 3] 插件开发之 registerCommand 到底做了什么
  3. 机器视觉_Java机器学习,第2部分
  4. APAX-5017PG 项目开发全程记录 - 筹备篇
  5. c++17(21)-volatile和const、const_cast
  6. mac上搭建vue环境及webstorm新建vue项目
  7. HP-UX的终端TERM要设置成什么,才能输入中文呢?
  8. 搭建负载均衡器nginx_为什么要使用NGINX作为负载均衡器?
  9. Django:静态文件staticfiles
  10. 洛谷 [POI2007]BIU-Offices 解题报告
  11. 搜索引擎只能抓取html文件,为什么有些明明存在的网页不能被搜索到?
  12. python代码段_python代码段有哪些
  13. c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
  14. 小米允许安装未知来源不用sim卡_视频能独立通话的小米手表,会像小米手机一样好用吗?...
  15. 【Word】公式“大括号”中的内容对齐
  16. Javadoc 使用详解
  17. 【华为OD机试真题 JS】竖直四子棋
  18. 【思维题】Bazinga
  19. 《数据结构与算法分析》课程设计——贪吃蛇问题
  20. leetcode第一题

热门文章

  1. Mac 科研常用软件
  2. ODL之VTN详解-如何提供虚拟2层网络-port-map
  3. python输入名字配对情侣网名_输入名字配置情侣网名-网名搜索
  4. Unity/C# 随机生成中文名
  5. ffmpeg 中av_rescale_rnd 与av_rescale ()(AVRounding结构体)
  6. mysql角色权限关系表查询_用户、角色和权限,多表查询
  7. 惠普计算机如何用u盘引导启动不了系统安装系统,惠普笔记本进BIOS设置U盘启动教程...
  8. ROSDUCT:通过rosbridge在本地公开远程ROS主题、服务和参数
  9. SpringMVC框架中@Controller类的方法的返回值的详细介绍
  10. 8086/8088 CPU的段寻址方式,段地址和偏移地址