Hadoop sqoop

概念

联通数据库(mysql,oracle等)和hadoop数据仓库(hdfs,hive,hbase)
将导入或导出命令翻译成mapreduce程序来实现

安装

1.需要hadoop环境
2.修改配置文件

sqoop-env.sh

export HADOOP_COMMON_HOME=/home/hadoop/apps/hadoop-2.6.1/ 
export HADOOP_MAPRED_HOME=/home/hadoop/apps/hadoop-2.6.1/
export HIVE_HOME=/home/hadoop/apps/hive-1.2.1

3.加入jdbc jar包
cp ~/app/hive/lib/mysql-connector-java-5.1.28.jar $SQOOP_HOME/lib/

sql->hdfs

bin/sqoop import \
--connect jdbc:mysql://ip01:3306/test \
--username root \
--password root \
--target-dir /sqoop \  # hdfs的目录
--fields-terminated-by ‘\001’ \  # 分隔符
--table emp # 表名
--split-by id #使用id字段 划分map任务
--m 1 # maptask个数

如果设置了 --m 1,则意味着只会启动一个maptask执行数据导入
如果不设置 --m 1,则默认为启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据

sql->hive

bin/sqoop import \
--connect jdbc:mysql://ip01:3306/test \
--username root \
--password root \
--target-dir /sqoop \  # hdfs的目录
--hive-import \
--fields-terminated-by ‘\001’ \  # 分隔符
--table emp # 表名
--split-by id #使用id字段 划分map任务
--m 1 # maptask个数

按需导入

bin/sqoop import \
--connect jdbc:mysql://ip1:3306/test \
--username root \
--password root \
--target-dir /wherequery2 \
--query 'select id,name,deg from emp WHERE id>1207 and $CONDITIONS' \  # $CONDITIONS是固定的
--split-by id \
--fields-terminated-by '\t' \
--m 2

hdfs->sql

bin/sqoop export \
--connect jdbc:mysql://ip1:3306/test \
--username root \
--password root \
--table emp \
--export-dir /user/hadoop/emp/

hive->sql

bin/sqoop export \
--connect jdbc:mysql://ip1:3306/test \
--username root \
--password root \
--fields-terminated-by '\t' \
--table emp \
--export-dir /user/hive/warehouse/t # 直接输入hive在hdfs中的文件
--m 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值