sqoop是一个用于在Hadoop和关系型数据库(Oracle,Mysql...)间数据传递的开源工具。下面以Oracle为例,介绍使用sqoop将数据从Oracle导入到Hadoop中(HDFS、Hive和HBase)。
1、导入命令及参数介绍
命令格式
$ sqoop import (generic-args) (import-args)
$ sqoop-import (generic-args) (import-args)
generic参数必须放在import参数之前,generic参数是与hadoop相关的参数,这里不做介绍。本文主要介绍import参数,import参数没有顺序要求,下面我们对常用的import参数进行介绍。
(1)通用参数:
参数名 |
参数说明 |
--connect <jdbc-uri> | JDBC连接字符串 |
--username <username> | 数据库用户名 |
--password <password> | 数据库密码 |
-P | 导入时,从控制台获取数据库密码 |
--password-file | 从指定的文件中获取数据库密码 |
--verbose | 导入时,输出更多的日志信息 |
import的通用参数还包括:--connection-manager ,--driver ,--hadoop-mapred-home ,--help ,--connection-param-file,--relaxed-isolation,可以在sqoop的官方文档中查看参数说明。
(2)控制参数
参数名 |
参数说明 |
--append | 将数据追加到一个已经存在于HDFS中的数据集中 |
--target-dir <dir> | 导入到HDFS目标目录 |
--table <table-name> | 要导入的表的表名 |
--columns <col,col,col…> | 要导入的列名,多个列名与逗号分隔 |
-e,--query <statement> | 从查询语句导入,'select * from ...' |
--where <where clause> | 导入时where子句 |
--split-by <column-name> | 导入时进行任务分割的字段,不能和--autoreset-to-one-mapper参数同时使用 |
--autoreset-to-one-mapper | 如果导入表没有主键或者没有使用split-by指定分割字段时,使用1个mapper进行数据导入,不能和--split-by参数同时使用 |
-m,--num-mappers <n> | 使用n个并行任务导入数据 |
--inline-lob-limit <n> | 内嵌LOB的最大长度(byte) |
-z,--compress |