sqoop的安装和简单使用案例

  1. 概述
    sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
    导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
    导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等.

  2. 原理
    将导入或导出命令翻译成mapreduce程序来实现
    在翻译出的mapreduce中主要是对inputformat和outputformat进行定制

  3. 安装
    安装sqoop的前提是已经具备java和hadoop的环境
    3.1 下载并解压
    这里用的是cdh版本sqoop.
    下载地址 http://archive.cloudera.com/cdh5/cdh/5/
    sqoop1版本详细下载地址 http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz
    sqoop2版本详细下载地址http://archive.cloudera.com/cdh5/cdh/5/sqoop2-1.99.5-cdh5.14.0.tar.gz
    里使用sqoop1的版本,下载之后上传到/export/softwares目录下,然后进行解压

    cd /export/softwares
    tar -zxvf sqoop-1.4.6-cdh5.14.0.tar.gz -C ../servers/
    

    3.2 修改配置文件

    cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf/
    cp sqoop-env-template.sh  sqoop-env.sh
    vim sqoop-env.sh
    #修改内容
    export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
    export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
    export HIVE_HOME=/export/servers/hive-1.1.0-cdh5.14.0
    

    3.3 加入额外的依赖包
    sqoop的使用需要添加两个额外的依赖包,一个是mysql的驱动包,一个是java-json的的依赖包,不然就会报错.
    mysql-connector-java-5.1.40.jar
    java-json.jar
    将这个两个jar包添加到sqoop的lib目录下

  4. 验证启动

    cd /export/servers/sqoop-1.4.6-cdh5.14.0
    bin/sqoop-version
    
  5. Sqoop的数据导入
    5.1 导入数据库表数据到HDFS
    下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。

    bin/sqoop import --connect jdbc:mysql://192.168.1.101:3306/userdb --password admin --username root --table emp --m 1
    

    在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。
    使用参数 --target-dir来指定导出目的地,
    使用参数–delete-target-dir来判断导出目录是否存在,如果存在就删掉
    使用参数–fields-terminated-by可以指定分隔符

    bin/sqoop import  --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --delete-target-dir --table emp  --target-dir /sqoop/emp --m 1 --fields-terminated-by '\t'
    

    5.2 导入关系表到HIVE
    将我们mysql表当中的数据直接导入到hive表中的话,我们需要将hive的一个叫做hive-exec-1.1.0-cdh5.14.0.jar的jar包拷贝到sqoop的lib目录下

    cp /export/servers/hive-1.1.0-cdh5.14.0/lib/hive-exec-1.1.0-cdh5.14.0.jar /export/servers/sqoop-1.4.6-cdh5.14.0/lib/
    

    准备hive数据库与表

    hive (default)> create database sqooptohive;
    hive (default)> use sqooptohive;
    hive (sqooptohive)> create external table emp_hive(id int,name string,deg string,salary int ,dept string) row format delimited fields terminated by '\001';
    

    导入

    bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp --fields-terminated-by '\001' --hive-import --hive-table sqooptohive.emp_hive --hive-overwrite --delete-target-dir --m 1
    

    hive表数据查看
    select * from emp_hive;
    hive查看
    5.3 导入关系表到hive并自动创建hive表
    我们也可以通过命令来将我们的mysql的表直接导入到hive表当中去

    bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp_conn --hive-import -m 1 --hive-database sqooptohive;
    

    通过这个命令,我们可以直接将我们mysql表当中的数据以及表结构一起倒入到hive当中去

  6. Sqoop的数据导出
    hdfs导出到mysql
    通过export来实现数据的导出,将hdfs的数据导出到mysql当中去

    bin/sqoop export \
    --connect jdbc:mysql://172.16.43.67:3306/userdb \
    --username root --password admin \
    --table emp_out \
    --export-dir /sqoop/emp \
    --input-fields-terminated-by ","
    

    sqoop更多参数可以参考sqoop官网 sqoop官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值