介绍
- 基本:Hadoop(Hive)与传统数据库的 数据导入导出工具
- 原理:将导入和导出命令转换成mapreduce程序来实现
- 依赖:Hadoop环境基于MapReduce + Java环境
配置
1.下载上传:http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/
2.sqoop-env.sh
-
export HADOOP_COMMON_HOME=/cluster/hadoop-2.7.3 export HADOOP_MAPRED_HOME=/cluster/hadoop-2.7.3 export ZOOKEEPER_HOME=/cluster/zookeeper-3.4.5 export ZOOCFGDIR=/cluster/zookeeper-3.4.5 export HIVE_HOME=/cluster/hive export HBASE_HOME=/cluster/hbase
3.复制jdbc驱动到sqoop的lib目录下
-
cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.7.bin__hadoop-2.6.0-alpha/lib/
“导入”概念:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,即使用import
“导出”概念:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,即使用export
使用案例:RDBMS到HDFS
全部导入
-
sqoop import --connect jdbc:mysql://ip:port/数据库名?useUnicode=true&characterEncoding=utf-8 \ --username 用户名 --password 密码 --table 表名 --target-dir hdfs路径 --fields-terminated-by '\t' --num-mappers map数
查询导入 query中必须加 and $CONDITIONS ,双引号时 $CONDITIONS前加转义 /
-
sqoop import --connect jdbc:mysql://ip:port/数据库名?useUnicode=true&characterEncoding=utf-8 \ --username 用户名 --password 密码 --query 'sql语句 and $CONDITIONS;' --target-dir hdfs路径 --delete-target-dir --fields-terminated-by '\t' --num-mappers map数
导入指定列
-
sqoop import --connect jdbc:mysql://ip:port/数据库名?useUnicode=true&characterEncoding=utf-8 \ --username 用户名 --password 密码 --table 表名 --columns 列名,多个列名用逗号隔开 --target-dir hdfs路径 --delete-target-dir --fields-terminated-by '\t' --num-mappers map数
条件导入 where条件筛选
-
sqoop import --connect jdbc:mysql://ip:port/数据库名?useUnicode=true&characterEncoding=utf-8 \ --username 用户名 --password 密码 --table 表名 --target-dir hdfs路径 --delete-target-dir --fields-terminated-by '\t' --num-mappers map数 --where "id=1"
使用案例:RDBMS到Hive
-
sqoop import --connect jdbc:mysql://ip:port/mysql数据库名 \ --username 用户名 --password 密码 --table 表名 --hive-import --hive-overwrite 覆盖模式 --hive-table hive表名 --num-mappers map数 --fields-terminated-by "\t" 注意:第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库
使用案例:RDBMS到HBase
-
sqoop import --connect jdbc:mysql://ip:port/mysql数据库名 \ --username 用户名 --password 密码 --table 表名 --columns "列名1,列名2,..." --column-family "列族名" --hbase-create-table --hbase-row-key "行键名" --hbase-table "hbase表名" --split-by id --num-mappers map数