sqoop 简要使用说明
原创
©著作权归作者所有:来自51CTO博客作者wx63118e2bb7416的原创作品,请联系作者获取转载授权,否则将追究法律责任
sqoop简介
Sqoop是一款开源的工具,主要用于在大数据集群hadoop 和RDMBS传统数据库之间进行数据的导入与导出

官网中介绍到,sqoop2从1.99.7版本开始,貌似与sqoop1不兼容,不打算用于生产部署,具体可见下面官网链接
官网: http://sqoop.apache.org/
Sqoop原理
将导入或导出命令翻译成mapreduce程序进行执行
翻译的MapReduce主要对inputformat和outputformat进行定制化。
Sqoop安装(以1.4.6版本为例)
- 下载压缩包

- 解压到指定目录中(/opt路径下最好)
- 修改配置文件
$ mv sqoop-env-template.sh sqoop-env.sh //重命名conf中的env.sh
添加sqoop-env.sh中的配置:hadoop hive zookeeper hbase的路径
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export ZOOCFGDIR=/opt/module/zookeeper-3.4.10
export HBASE_HOME=/opt/module/hbase
拷贝JDBC的jar包 //找到mysql-connector的jar包复制到sqoop/lib中
cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/
测试
bin/sqoop help //出现命令提示即可
Sqoop简单使用–RDBMS到HDFS
将mysql中数据导入到HDFS中
#将数据导入到hdfs中,import指令
#从mysql中导入到hdfs中 --target-dir:目标文件 --delete-target-dir:删除目标文件,如果原来已存在就进行删除
#--num-mappers:设置maptask任务的数量
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 1 \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
查询导入
#查询导入
#查询导入:将数据从mysql导入到HDFS中
#不同的是使用--query 进行 sql语句查询,查询语句后面添加 and $CONDITIONS
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 1 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from staff where id <=1 and $CONDITIONS;'
将数据导入到Hbase中
#将数据导入到HBase
#当前版本不支持自动创建表,需要在hbase中手动创建表
#--hbase-table :创建的表名 --split-by: 以id作为分隔符
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 1 \
--table staff \
--columns "id,name,sex" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_company" \
--num-mappers 1 \
--split-by id
导出数据
#将输出导出
#export 导出到mysql --table 输出表名
bin/sqoop export \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 1 \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--input-fields-terminated-by "\t"
脚本方式
1. 将导出脚本写在 sqoop脚本中
2. bin/sqoop --options-file XXX.opt //sqoop --options-file 执行sqoop脚本
更多详细功能可在官方文档中查找、谢谢…