Sqoop概述
官网 http://sqoop.apache.org/
场景
传统型缺点,分布式存储。把传统型数据库数据迁移。
Apache Sqoop(TM)是一种用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效
传输批量数据的工具 。
数据交换:Oracle <---> Sqoop <---> HDFS、HBase、Hive
安装部署
解压
修改配置
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/root/hd/hadoop-2.8.4
export HADOOP_MAPRED_HOME=/root/hd/hadoop-2.8.4
export HIVE_HOME=/root/hd/hive
export ZOOCFGDIR=/root/hd/zookeeper-3.4.10/conf
发送mysql/oracle驱动到lib下
检测是否安装成功 bin/sqoop help
使用sqoop
注意:如果是Oracle,大写:用户名、表名、列名
1 codegen Generate code to interact with database records
sqoop codegen --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SCOTT --password tiger --table EMP --outdir /root/sqoop
2 create-hive-table Import a table definition into Hive
根据Oracle的表结构创建Hive的表结构
sqoop create-hive-table --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --hive-table emphive
3 eval Evaluate a SQL statement and display the results
在Sqoop执行SQL
sqoop eval --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SCOTT --password tiger --query 'select * from emp where deptno=10'
4 export Export an HDFS directory to a database table
5 help List available commands
6 import Import a table from a database to HDFS
sqoop import --help ----> 本质是:就是MR程序
导入数据到HDFS
sqoop import --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SCOTT --password tiger --table EMP --target-dir /sqoop/import/emp1
导入EMP表,指定导入列
sqoop import --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SCOTT --password tiger --table EMP --columns ENAME,SAL --target-dir /sqoop/import/emp2
7 import-all-tables Import tables from a database to HDFS
sqoop import-all-tables --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SCOTT --password tiger
8 list-databases List available databases on a server
针对Oracle:当前数据库中所有的用户名
针对MySQL: 所有的数据库的名字
sqoop list-databases --connect jdbc:oracle:thin:@192.168.157.163:1521/orcl --username SYSTEM --password password
9 list-tables List available tables in a database
sqoop list-tables --connect jdbc:oracle:thin:@192.168.223.133:1521:orcl --username SCOTT --password tiger
10 将数据导入HBase(需要事先将表创建)
sqoop import --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --columns empno,ename,sal,deptno --hbase-table emp --hbase-row-key empno --column-family empinfo
11 mysql导入到hive 需要先创建hive表
bin/sqoop import --connect jdbc:mysql://hd09-01:3306/sq --username root --password root --table user1 --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table user_sqoop