• Sqoop 学习


    参考视频

            大数据Sqoop教程丨从零开始讲解大数据业务及数据采集和迁移需求_哔哩哔哩_bilibili

    介绍

    Sqoop是Hadoop生态体系和RDBMS(关系型数据库)体系之间传送数据的一种工具

            Hadop生态系统:HDFS,Hbase,Hive等

            RDBMS包括:Mysql,Oracle,DB2等

            Import:数据导入, RDBMS(DBinputFormat) -> Hadoop(TestoutputFormat)

            export:  数据导出,Hadoop(DBoutputFormat) -> RDBMS(TestInputFormat)

    机制

            Sqoop工作机制是将导入或导出命令翻译成MapReduce程序来实现,在翻译出的MapReduce中主要对ImportFormat和OutFormat进行定制

    安装部署

    前置条件:

    安装java,hadoop

    配置文件(基于sqoop1.4.6):

    上传,解压,修改配置

    1. cd $SQOOP_HOME/conf
    2. mv sqoop-env-template.sh sqoop-env.sh
    3. vim sqoop-env.sh
    4. export HADOOP_CONFIG_HOME=/export/../hadoop-2.7.5
    5. export HADOOP_MAPRED_HOME=/export/../hadoop-2.7.5
    6. export HIVE_HOME=/export/../hive

    加入mysql的jdbc驱动包

    cp /hive/lib/mysql-connector-java-5.1.32.jar $SQOOP_HOME/lib/

    验证

    1. bin/sqoop list-databases \
    2. --connect jdbc:mysql://localhost:3306/ \
    3. --username root --password 123456
    4. \: 一行过长,用\表示一行还没有完,等待

    sqoop导入

    1. bin/sqoop import \
    2. --connect jdbc:mysql://ip:port/dbName \
    3. --username roor \
    4. --password 123456\
    5. --delete-target-dir \ (如果target-dir 的路径存在,提前删除)
    6. --target-dir /sqoopresult \ (可以用来存放导出数据存放到HDFS的目录)
    7. --table myTableName \
    8. --m 1 \ (可以理解成maptask ,并行度,表有主键根据主键分,没有主键需要指定字段)
    9. --split-by id \ (根据什么字段切割,最好是数字字段)
    10. --fields-terminated-by '\t' (指定分隔符,还可以,等,默认,)
    11. 条件导入
    12. --where "age>12" (条件查询导入,可改成每天时间,则是每日导出)
    13. --query 'select id,name,age from myTableName where age>18 and $CONDITIONS' (1 不加--table,2 必须有where条件, 3必须加上$CONDITIONS, 4 sql必须是单引号)
    14. 增量导入
    15. --check-column(col) (指定列,一般是主键或者时间戳,自增长不重复)
    16. --incremental(mode) (append:追加 lastmodified:最后的修改时间)
    17. --last-value(value) (指定上次导入后判断的最大值,也可以自己指定某一个值)
    18. --merge-key (col)(append模式下可以合并文件,不会每次导入都在hdfs里新增一个文件.除了追加合并外,如果之前的数据有修改也可以进行修改操作,且数据不会重复)
    19. eg:
    20. --check-column id
    21. --incremental append
    22. --last-value 1205
    23. --merge-key id (追加,id>=1205的数据)
    24. --check-column create_time
    25. --incremental lastmodified
    26. --last-value '2020-02-01 15:00:00' (追加,大于整个时间的数据)

    sqoop导出

    目标表必须存在数据库当中

    导出的三种模式

    1 默认,执行insert语句,插入到表里

    2 更新模式,sqoop将生成UPDATE置换数据库中现有记录的语句

    3 调用模式,sqoop将为每条记录场景一个存储过程调用

    待补充

    参考文档:

    Sqoop简介以及使用-CSDN博客

  • 相关阅读:
    基于arm-linux-gcc版本,音乐视频播放器mplayer
    文件夹中lib,dll含义
    描述一下 Array.forEach() 循环和 Array.map() 方法之间的主要区别
    算力和LAXCUS分布式操作系统
    什么原因导致百度百科建立一直审核不通过?
    国际油气公司数字化转型探析
    JVM快速入门
    服务器简单介绍
    对指针的深入理解
    C语言入门学习 --- 4.数组
  • 原文地址:https://blog.csdn.net/OutRoading/article/details/136553302