一  Sqoop是什么

  1. Sqoop:SQL-to-Hadoop
  2. 连接传统关系型数据库和Hadoop的桥梁 把关系型数据库的数据导入到 Hadoop 系统 ( 如 HDFS、HBase 和 Hive) 中; 把数据从 Hadoop 系统里抽取并导出到关系型数据库里
  3. 利用MapReduce,批处理方式进行数据传输

 

 

二 Sqoop的优势

  1. 高效、可控的利用资源,任务并行度、超时时间等
  2. 数据类型映射与转换可自动进行,用户也可自定义

  3. 支持多种数据库(MySQL、Oracle、PostgreSQL)

 

 

三 Sqoop架构

 

 

 四 Sqoop命令

Sqoop import:将数据从关系型数据库导入Hadoop 中

步骤1 :Sqoop 与数据库Server通信,获取数据库表的元数据信息;

步骤2 :Sqoop 启动一个Map- Only 的MR 作业,利用元数据信息并行将数据写入Hadoop

 

Sqoop import使用

sqoop import \ --connect jdbc:mysql://mysql.example.com/sqoop \ --username sqoop \ --password sqoop \ --table person --target-dir

 

参数说明:

--connnect: 指定JDBC URL

--username/password :mysql 数据库的用户名

--table :要读取的数据库表

--hadoop-home hadoop目录

 

 

Sqoop Export 使用

将数据从Hadoop 导入关系型数据库导中

步骤1 : Sqoop 与数据库Server通信,获取数据库表的元数据信息;

步骤2 :并行导入数据: 将Hadoop 上文件划分成若干个split ; 每个split 由一个Map Task 进行数据导入

 

sqoop export \ --connect jdbc:mysql://mysql.example.com/sqoop \ --username sqoop \ --password sqoop \ --table cities \ --export-dir cities --fields-terminated-by

 

--connnect: 指定JDBC URL

--username/password :mysql 数据库的用户名

--table :要导入的数据库表

export-dir :数据在HDFS 上存放目录

 

 

Sqoop与其他系统结合

Sqoop 可以与Oozie 、Hive 、Hbase 等系统结合

用户需要在sqoop-env.sh 中增加HBASE_HOME 、HIVE_HOME