1 Sqoop概述
Sqoop是一个旨在Hadoop和关系数据库或主机之间传输数据的工具。你可以使用Sqoop从关系型数据库管理系统(RDBMS),如MySQL、Oracle或大型机到Hadoop分布式文件系统(HDFS)导入数据,在Hadoop中的MapReduce转换数据,然后将数据导出到一个RDBMS 。Sqoop使用MapReduce导入和导出数据,它提供了并行操作,以及容错。
2 版本说明
本文档适用于Sqoop1。
软件 | 版本 |
---|---|
Sqoop | 1.4.5-cdh5.3.0 |
Mysql JDBC驱动 | 5.1.32 |
ORACLE JDBC驱动 | 和oracle版本保持一致 |
3 驱动安装
3.1 MySQL
将驱动对应的jar包放置到 /usr/share/java/下。
如:/usr/share/java/mysql-connector-java-5.1.32-bin.jar
4 基本用法
4.1 导入
sqoop import \
--connect JDBC_URL \
--username USERNAME \
--password PASSWORD \
--table TABLE \
--hive-import \
--split-by SPLIT_BY_COL \
--num-mappers N \
--hive-database HIVE_DB_NAME \
--hive-table HIVE_TABLE_NAME \
(--hive-partition-key partition_name \
--hive-partition-value partititon_value \
附:如果是分区表则需指出分区名称和分区值)
--columns col1,clo2,col3… \
--warehouse-dir /user/hive/warehouse/ \
--fields-terminated-by ‘|’ \
--direct \
--compress
参数说明
参数 | 说明 |
---|---|
--connect | 连接RDBMS的jdbc连接字符串。 示例:--connect jdbc:mysql:// MYSQL_SERVER: PORT / DBNAME 其中:mysql默认端口号为3306; 示例:--connect jdbc:oracle:thin:USERNAME/PASSWORD@ORACLE_SERVER:PORT: SID 其中:Oracle默认端口号为1521; thin:是驱动方式,“瘦”的意思,直接使用原生的Oracle JDBC驱动; SID:是一个数据库的唯一标识符,是建立一个数据库时系统自动赋予的一个初始ID。 |
--username | 连接RDBMS所使用的用户名。 |
--password | 连接RDBMS所使用的密码。 |
--table | 将要导入到hive的表。 |
--split-by | 分割导入任务所使用的字段。需要明确指定,推荐使用主键。 |
--hive-import | 插入数据到hive当中,使用hive默认的分隔符。 |
-m, --num-mappers< n> | 使用n个map任务并行导入数据。是指生成的map任务的总数量, 不是同时处于RUNNING状态的数量。 |