Hadoop——Sqoop工具

Sqoop工具的安装和使用

基本介绍:Sqoop是sql to hadoop的简称,属于RDBMS和Hadoop之间传递数据的工具.以HDFS为中心,从RDBMS到Hadoop为导入(import),反之则为导出(export)

1.安装

Sqoop版本:1.4.6
(1)解压到opt目录
tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/
(2)进入conf目录下修改环境文件,将需要中转的组件的地址写入配置
# 复制模板
cp sqoop-env-template.sh sqoop-env.sh
# 编辑文件
vi sqoop-env.sh
#Set path to where bin/hadoop is available
#export HADOOP_COMMON_HOME=
export HADOOP_COMMON_HOME=/opt/hadoop-2.7.2
#Set path to where hadoop-*-core.jar is available
#export HADOOP_MAPRED_HOME=
export HADOOP_MAPRED_HOME=/opt/hadoop-2.7.2
#set the path to where bin/hbase is available
#export HBASE_HOME=
export HBASE_HOME=/opt/hbase-1.3.1
#Set the path to where bin/hive is available
#export HIVE_HOME=
export HIVE_HOME=/opt/apache-hive-1.2.1-bin
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=

(3)拷贝mysql的jar包到sqoop的lib目录下

cp /opt/packet/mysql-connector-java-5.1.31.jar /opt/sqoop/lib/

2.使用Sqoop基本命令

(1)查看帮助
bin/sqoop help
(2)查看sqoop中list-databases帮助命令
bin/sqoop list-databases --help
(3)列出所有数据库
PS:行后面添加 \ 表示输入还未结束,不会进行提交
bin/sqoop list-databases \
--connect jdbc:mysql://localhost:3306 \
--username root \
--password root

3.MySql导入HDFS

(1)基本使用
PS:如果未指定路径,则会导入到/user/root下
--table:指定表
--columns "xx":指定需要导入的列
--where "xx":使用where进行条件筛选
--fields-terminated-by ',':指定切割符
--target-dir /data/retail_db/products:指定导入目标路径
--delete-target-dir:覆盖目标路径(慎用)
--m 3:指定MapReduce数量


bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--table products \
--columns "order_id,order_date,order_customer_id" \
--where "order_customer_id > 10000"
--fields-terminated-by ',' \
--target-dir /data/retail_db/products \
--delete-target-dir \
--m 3
(2)使用查询语句过滤
PS:所有query查询都应该以$CONDITIONS结束,sqoop内部使用该条件将记录范围分发给所有Mapper
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--query "select * from orders where order_customer_id > 10000 and \$CONDITIONS" \
--target-dir /data/retail_db/orders \
--split-by order_id \
--delete-target-dir \
--m 3
(3)增量导入
简述:增量导入可以指定导入的数据起始位置,类似于向原表中追加数据

比如:有一张表,一开始导入2014年之前的数据

bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--table orders \
--where "order_date < '2014-01-01'" \
--target-dir /data/retail_db/orders \
--delete-target-dir \
--m 3

将后面的数据导入进去

bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--table orders \
--incremental append \
--check-column order_date \
--last-value '2013-12-31' \
--target-dir /data/retail_db/orders \
--m 3

–last-value 指定上一次导入的最大值

–check-column order_date 指定递增的列

–incremental append 以追加的方式导入

4.MySql导入Hive

target-dir XX:指定导入路径,可以不存在,会自己创建
PS:在导入hive时,可以加上分区
--hive-partition-key "XX" 
--hive-partition-value "XX"


bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--table orders \
--target-dir /user/hive/warehouse/retail_db.db/orders \
--hive-import \
--create-hive-table \
--hive-database retail_db \
--hive-table orders \
--m 3

5.MySql导入HBase

PS:可以使用 --hbase-create-table,但是有些版本不支持,所有如果使用后报错,就删除这句话,手动建表
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password root \
--table orders \
--hbase-table orders \
--column-family cf \
--hbase-row-key order_id \
--m 3

6.从HDFS到MySql

PS:导出使用的是export
--table orders:mysql的表名,需提前创建
--export-dir:hdfs上的文件路径


bin/sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password root \
--table orders \
--export-dir /data/retail_db/orders \
--m 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值