• 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-全量

    1. #split-by后边的字段是数字类型
    2. sqoop import \
    3. --connect jdbc:mysql://192.168.88.80:3306/userdb \
    4. --table emp \
    5. --username root \
    6. --password 123456 \
    7. --target-dir /sqoop/result3 \
    8. --delete-target-dir \
    9. --fields-terminated-by '\t' \
    10. --split-by id \
    11. --m 2
    12. #如果你要指定多个maptask来完成数据的导入,也就是--m参数的值不是1,则必须添加一个参数--split-by
    13. #该参数用来指定你原表的数据如何分配给多个线程来实现导入
    14. #--split-by id 内部原理是获取id的最小值和id的最大值,进行平均划分
    15. SELECT MIN(`id`), MAX(`id`) FROM `emp`
    16. #如果split-by后边的字段是字符串类型,则需要添加以下内容
    17. -Dorg.apache.sqoop.splitter.allow_text_splitter=true \

    3.3导入HDFS-增量

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

  • 相关阅读:
    hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥
    Ingress基本故障排除方法
    4-ubuntu22.04-安装QT-5.15.2
    轻量级笔记软件评测 Drafts. Apple 备忘录、Flomo、Workflowy
    自定义JPA函数扩展,在specification中实现位运算
    弘辽科技:淘宝提升销量后销量清零是为什么?提升销量要注意什么
    驱动开发,stm32mp157a开发板的led灯控制实验
    es6总结
    Jammy@Jetson Orin - Tensorflow & Keras Get Started: 001 Linear Regression
    python常见错误总结
  • 原文地址:https://blog.csdn.net/qq331570870/article/details/127719266