大数据之Sqoop(一) --- Sqoop简介,安装和配置,MySQL数据的导入导出到HDFS,Hive,HBase,Sqoop Job,增量导入

一、Sqoop简介[1.4.6版本]
------------------------------------------------------------
    1.RDBMS 和 HDFS之间进行数据导入导出的工具

    2.将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制

    3.sqoop就是一个工具, 只需要在一个节点上进行安装即可。


二、Sqoop的安装和配置
---------------------------------------------------------------
    1.下载1.4.6版本(1.997版本BUG太多)

    2.tar开,配置环境变量
        SQOOP_HOME=/soft/sqoop
        ...

    3.配置sqoop/conf/sqoop-env.sh
        $> cd $SQOOP_HOME/conf
        $> cp sqoop-env-template.sh sqoop-env.sh
        $> nano sqoop-env.sh
        添加如下内容
        export HADOOP_COMMON_HOME=/soft/hadoop
        export HADOOP_MAPRED_HOME=/soft/hadoop
        export HBASE_HOME=/soft/hbase
        export HIVE_HOME=/soft/hive
        export ZOOCFGDIR=/soft/zookeeper/conf

    4.复制mysql驱动到/soft/sqoop/lib
        复制jar包到sqoop/tools/lib下
        $> cp mysql-connector-java-5.1.17.jar /soft/sqoop/lib/

    5.验证sqoop的安装
        $> sqoop-version

    6.查看帮助
        $> sqoop help
        $> sqoop help import


三、MySQL数据的导入导出到HDFS
---------------------------------------------------
    1.将MySQL中的单个表导入到HDFS中
        $ sqoop import \
                --connect jdbc:mysql://192.168.43.1:3306/mydata \
                --driver com.mysql.jdbc.Driver \
                --username mysql \
                --password mysql \
                --table mytable \
                --m 1 \
                --target-dir /data/sqoop/expdata \
                --where "id > 1" \
                --incremental append \
                --check-column id \
                --last value 1205 \

    2.将MySQL指定库中的所有表导入到HDFS中[不指定表名,直到导出到hdfs根目录下]
        $ sqoop import-all-tables \
              --connect jdbc:mysql://192.168.43.1:3306/mydata \
              --driver com.mysql.jdbc.Driver \
              --username mysql \
              --password mysql \

    3.将HDFS的表导出到MySQL
        a.MySql中创建相似的表
            mysql> create table mytable_bak like mytable;

        b.导出
            $> sqoop export \
                    --connect jdbc:mysql://192.168.43.1:3306/mydata \
                    --username mysql \
                    --password mysql \
                    --table mytable_bak \
                    --export-dir /data/sqoop/expdata

四、MySQL数据导入到Hive
--------------------------------------------------------
    1.导入--- 将MySQL中mydata库下的mytable_bak表,导入到Hive的mydb2.mytable_bak1中
        $> sqoop import \
                --connect jdbc:mysql://192.168.43.1:3306/mydata \
                --driver com.mysql.jdbc.Driver \
                --username mysql \
                --password mysql \
                --table mytable_bak \
                --hive-import \
                --hive-overwrite \
                --hive-table mydb2.mytable_bak1 \


五、MySQL数据导入到HBase
------------------------------------------------------------
    1.导入--将MySQL中mydata库下的mytable_bak表,导入到Hbase的mytable_bak1中[注意先后顺序,而且ns1:mytable_bak1,用的是: ]
        sqoop import \
             --connect jdbc:mysql://192.168.43.1:3306/mydata \
             --driver com.mysql.jdbc.Driver \
             --username 'mysql' \
             --password 'mysql' \
             --table 'mytable_bak' \
             --hbase-table 'ns1:mytable_bak1' \
             --hbase-row-key 'id' \
             --column-family 'f1' \


六、Sqoop Job -- 导入导出过程的封装,方便以后导入导出
------------------------------------------------------------
    1.创建作业
        sqoop job --create myjob -- import \
                [下面就是之前的导入语句]
                --connect jdbc:mysql://192.168.43.1:3306/mydata \
                --driver com.mysql.jdbc.Driver \
                --username 'mysql' \
                --password 'mysql' \
                --table 'mytable_bak' \
                --hbase-table 'ns1:mytable_bak1' \
                --hbase-row-key 'id' \
                --column-family 'f1' \

    2.查看创建的作业
        sqoop job --list
        sqoop job --show myjob

    3.启动作业
        sqoop job --exec myjob

    4.删除作业
        sqoop job --delete myjob


七、增量导入
---------------------------------------------------------
    1.参数
        --incremental             //增量类型,append/lastmodified
        --check-column            //指定检查字段,不能为varchar
        --last value              //之前导入的最大值

    2.增量导入id 大于55的数据
        sqoop import \
           --connect jdbc:mysql://192.168.43.1:3306/mydata \
           --driver com.mysql.jdbc.Driver \
           --username 'mysql' \
           --password 'mysql' \
           --table 'mytable_bak' \
           --hbase-table 'ns1:mytable_bak1' \
           --hbase-row-key 'id' \
           --column-family 'f1' \
           --incremental append \
           --check-column id \
           --last-value 5 \






































猜你喜欢

转载自blog.csdn.net/xcvbxv01/article/details/84201932
今日推荐