【博学谷学习记录】超强总结,用心分享| ETL基本介绍

1.概念

1.1 Extract

1、抽取OLTP的数据
2、抽取日志数据
3、通过接口抽取第三方数据

1.2 Transform

1、数据清洗
  丢弃一些异常数据
  处理一些脏数据
  处理一些重复数据
2、数据的格式转换
   日期:
        crate_time     year   month   day
       2022-12-23 -->  2022   12      23
       2022-1-1   -->  2022-01-01
   字符串转换: 
          "path/list"  -->  path/list
           json数据     -->  解析

1.3Load

1、全量加载
  数据全部加载
2、增量加载
  每次只加载新增或者修改数据

2 ETL 采集工具

2.1 Kettle

特点:
 1:图形化操作
 2:底层是Java
 3: 支持集群
 4: 数据量大时,性能一般

2.2Nify

特点:
 1:图形化操作
 2:采集数据时会造成大量的IO操作,性能一般

2.3Datax

特点:
 1:单进程,多线程
 2:不能支撑海量数据的迁移操作

2.4 Sqoop

特点:
 1:为Hadoop而生
 2:底层是MapReduce
 3:支撑大数据量的数据迁移工作

3 Sqoop框架

3.1介绍

1、Sqoop的导入导出
 导入: RDBMS -----> Hadoop平台
 导出:  Hadoop平台 -----> RDBMS
 
2、Sqoop的重点是写导入导出的命令
3、Sqoop的底层是没有Reduce的MR
  Sqoop这是机械性将数据源的数据一条条进行搬移,不需要对数据做额外的聚合,所以不需要Reduce

3.2 导入HDFS-全量

#split-by后边的字段是数字类型
sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/userdb \
--table emp \
--username root \
--password 123456 \
--target-dir /sqoop/result3 \
--delete-target-dir \
--fields-terminated-by '\t' \
--split-by id \
--m 2

#如果你要指定多个maptask来完成数据的导入,也就是--m参数的值不是1,则必须添加一个参数--split-by
#该参数用来指定你原表的数据如何分配给多个线程来实现导入
#--split-by id  内部原理是获取id的最小值和id的最大值,进行平均划分
 SELECT MIN(`id`), MAX(`id`) FROM `emp`
 
 
 #如果split-by后边的字段是字符串类型,则需要添加以下内容
 -Dorg.apache.sqoop.splitter.allow_text_splitter=true \

3.3导入HDFS-增量

sqoop import \
--connect jdbc:mysql://192.168.88.80:3306/userdb \
--username root \
--password 123456 \
--target-dir /sqoop/result5 \
--query 'select id,name,deg from emp WHERE  id>1203 and $CONDITIONS' \
--delete-target-dir \
--fields-terminated-by '\t' \
--m 1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值