ETL基本介绍博学谷学习记录

Posted 奔跑如风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于ETL基本介绍博学谷学习记录的主要内容,如果未能解决你的问题,请参考以下文章

博学谷年度钻石会员C++完整

博学谷学习记录超强总结,用心分享 | 产品经理还得懂点儿运营

博学谷学习记录超强总结,用心分享 | yarn的执行流程

博学谷学习记录超强总结,用心分享 | 小程序 canvas生成图片

博学谷学习记录超强总结,用心分享 | hive 查询分组join

[博学谷学习记录] 超强总结,用心分享 | Zookeeper