Sqoop
1、sqoop:是一个工具,主要用于导入导出,实现MySQL到Hadoop之间数据的转换
2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中(HDFS、HIVE、HBASE)
3、导出数据:从haoop中将数据导出到关系数据库中MySql
总体作用:
导入:MySQL------->HDFS 导出:HDFS ------->MySQL
MySQL------->Hive Hive ------->MySQL
MySQL------->Hbase Hbase ---…………---->MySQL(间接)
4、导入数据:import
(1)Mysql到HDFS中:直接导入
sqoop import \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
-m 1
(2)Mysql到hive中:会先将数据导入到HDFS中,然后再load进入hive中
sqoop import \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hive-import \
-m 1
(3)Mysql到Hbase中:要先创建表,指定列簇(以其主键为行键,选取其中的一个字段为列簇)
sqoop import \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hbase-table new_help_keyword \
--column-family person \
--hbase-row-key help_keyword_id
5、导出数据:export
(1)HDFS到Mysql中:首先在Mysql中创建表与HDFS中相吻合,再进行导出
create database sqoopdb default character set utf8 COLLATE utf8_general_ci;
//根据相应的数据格式创建对应的表格
use sqoopdb;
CREATE TABLE sqoopstudent (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
sex VARCHAR(20),
age INT,
department VARCHAR(20)
)
sqoop export \
--connect jdbc:mysql://hadoop02:3306/sqoopdb \
--username root \
--password root \
--table sqoopstudent \
--export-dir /sqoopdata \
--fields-terminated-by ',
(2)hive到Mysql中:首先在Mysql中创建表与hive中相吻合,再进行导出
sqoop export \
--connect jdbc:mysql://hadoop02:3306/sqoopdb \
--username root \
--password root \
--table uv_info \
--export-dir /user/hive/warehouse/uv/dt=2011-08-03 \
--input-fields-terminated-by '\t'
(3)Hbase到MySQL中
一般采用如下 3 种方法:
1、将 HBase 数据,扁平化成 HDFS 文件,然后再由 sqoop 导入
2、将 HBase 数据导入 Hive 表中,然后再导入 MySQL
3、直接使用 HBase 的 Java API 读取表数据,直接向 MySQL 导入,不需要使用 sqoop