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基本介绍博学谷学习记录的主要内容,如果未能解决你的问题,请参考以下文章
博学谷学习记录超强总结,用心分享 | 产品经理还得懂点儿运营
博学谷学习记录超强总结,用心分享 | 小程序 canvas生成图片