使用sqoop进行hive与传统数据库之间的导入、导出数据

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

一、sqoop的安装

sqoop安装

  1. http://sqoop.apache.org/ 进入sqoop官网下载sqoop安装包,将下载完成后的压缩包上传到虚拟机上的Linux服务器上;
  2. tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local解压sqoop压缩包。

sqoop配置

  1. sqoop环境变量的配置
    在/etc/profile中添加如下内容:
    export SQOOP_HOME=/usr/local/sqoop-1.4.7.bin__hadoop-2.6.0
    export PATH=$PATH:$SQOOP_HOME/bin
  2. 执行source /etc/profile,使sqoop在当前窗口生效;
    执行sqoop version;出现sqoop版本信息即为配置成功
  3. 配置数据库驱动
    将数据库连接驱动拷贝到$SQOOP_HOME/lib里
    所需jar包:链接:https://pan.baidu.com/s/1BMHPjvGjf4VDdsxPtIF8Ww 密码:kkja

sqoop的使用

  1. 将数据库的数据导入到hdfs上
    sqoop import --connect jdbc:mysql://192.168.1.10:3306/bigdata30 --username root --password 123 --table trade_detail --columns 'id, account, income, expenses'
    根据个人设置不同修改对应属性
    –connect ip地址,主机名,
    –username用户名,
    –password用户密码,
    –table表名,
    –columns 表中字段,
    –target-dir 输出路径,
    –fields-terminated-by 指定数据分隔符,
    eg:sqoop import --connect jdbc:mysql://192.168.1.10:3306/bigdata30 --username root --password 123 --table trade_detail --target-dir '/sqoop/td' --fields-terminated-by '\t'
    –m 指定map数量,
    eg:sqoop import --connect jdbc:mysql://192.168.1.10:3306/bigdata30 --username root --password 123 --table trade_detail --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2
    –where 增加where条件,条件用引号扩住,
    eg:sqoop import --connect jdbc:mysql://192.168.1.10:3306/bigdata30 --username root --password 123 --table trade_detail --where 'id>3' --target-dir '/sqoop/td2'
    –query 增加query语句
    eg:sqoop import --connect jdbc:mysql://192.168.1.10:3306/bigdata30 --username root --password 123 \
    --query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS' --split-by trade_detail.id --target-dir '/sqoop/td3'
  2. 将hsfs上的数据导出到数据库
    sqoop export --connect jdbc:mysql://192.168.8.120:3306/bigdata30 --username root --password 123 --export-dir '/td3' --table td_bak -m 1 --fields-terminated-by ','

**不管是从hsfs上导出数据到数据库,还是从数据库导入数据到hdfs,sqoop所用属性相同,可根据需要自行修改添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值