Sqoop

作者: _Levi__ | 来源:发表于2019-08-20 00:16 被阅读0次

    为什么要有Sqoop?

    将数据从别的数据库导到Hadoop、Hbase或Hive太麻烦了。

    什么是Sqoop?

          Sqoop就是Hadoop、Hive、HBase等数据仓库与数据库之间传输数据的工具。,就是将导入(输入)和导出(输出)的命令映射成MR程序。

          导入:MySQL等数据库数据导入到HDFS、Hive、HBase等数据仓库

          导出:Hadoop导出数据到数据库

    操作

    RDBMS

    -> HDFS

    全表数据导入:

    bin/sqoop import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --table user

    --target-dir /user/sqoop/user

    --delete-target-dir

    --num-mappers 1

    --fields-terminated-by "\t"

    部分数据导入:

    bin/sqoop import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --target-dir /user/sqoop/user

    --delete-target-dir

    --num-mappers 1

    --fields-terminated-by "\t"

    --query 'select name from user where id<= 10 and $CONDITIONS';     

    导入指定的列:

    bin/sqoop import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --target-dir /user/sqoop/user

    --delete-target-dir

    --num-mappers 1

    --fields-terminated-by "\t"

    --table user

    --columns id,name;

    Sqoop关键字筛选数据导入:

    bin/sqoop import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --target-dir /user/sqoop/user

    --delete-target-dir

    --num-mappers 1

    --fields-terminated-by "\t"

    --table user

    --where id=3;

    RDBMS ->

    Hive

    导入数据到Hive:

    bin/sqoop import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --table user

    --num-mappers 1

    --hive-import

    --hive-table user

    --fields-terminated-by '\t'

    --hive-overwrite

    --delete-target-dir

    --hive-table levi.user;

    备注:如果导入的表在hive中是没有的,那么则会到default数据库

    导入过程:将数据分割后,输出到一个文件中,把这个文件弄到HDFS,并且在metastore中生成对应关系的元数据

    Hive/HDFS

    -> RDBMS

    导出数据到RDBMS:

    bin/sqoop export

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --table user

    --num-mappers 1

    --export-dir /user/sqoop/user

    --input-fields-terminated-by '\t';

    备注:假设是MySQL数据库,如果数据库中没有表则会报错

    Sqoop-Job

    定义Job:

    bin/sqoop job --create jobname

    -- import

    --connect jdbc:mysql://hadoop01.levi.com:3306/background

    --username root

    --password root

    --table user

    --target-dir /user/sqoop/user

    --delete-target-dir

    --num-mappers 1

    --fields-terminated-by "\t"

    查看Job:bin/sqoopjob --list

    执行Job:bin/sqoopjob --exec jobname

    验证作业情况:bin/sqoop job --show jobname

    相关文章

      网友评论

          本文标题:Sqoop

          本文链接:https://www.haomeiwen.com/subject/gakysctx.html