Sqoop是一个用来将Hadoop(hdfs/hive/hbase)和关系型数据库(如MySQL,Oracle,SQL SERVER,Postgres等)中的数据相互转移的工具,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
官网说明:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html
Sqoop命令分四大类:
(1).sqoop import 单表导入
(2).sqoop import-all-tables 批量导入(整个数据库导入)
(3).sqoop export 导出(常用于数量增量更新/同步)
(4).sqoop job 多任务创建(增量导入时的任务创建)(可自动记录上一次导入的最大Key值)
使用参数说明
1.数据导入:sqoop import
可通过 sqoop import --help 命令查看
参数 说明
普通参数
- –connect 指定JDBC连接字符串 –connection-manager 指定连接管理器类名
–connection-param-file 指定连接参数文件 –driver 手动指定要使用的JDBC驱动程序类
–hadoop-home 覆盖 $HADOOP_MAPR ED_HOME_ARG 参数 –hadoop-mapred-home
覆盖 $HADOOP_MAPR ED_HOME_ARG 参数
–help 打印使用说明
–metadata-transaction-isolation-level 为元数据查询定义事务隔离级别
–oracle-escaping-disabled 禁用Oracle/OraOop连接管理器的转义机制
-P 从控制台读取密码
–password 设置密码验证
–password-alias 凭据提供程序密码别名
–password-file 在密码文件路径上设置验证
–relaxed-isolation 对导入使用read-uncommi隔离
–skip-dist-cache 跳过将jar复制到分布式缓存
–temporary-rootdir 定义导入的临时根目录
–throw-on-error 在作业期间发生错误时,重新抛出RuntimeException
–username 设置身份验证的用户名
–verbose 工作时打印更多信息
导入的控制参数
–append 以追加模式导入数据
–as-avrodatafile 将导入数据以avro文件存储
–as-parquetfile 将导入数据以parquet文件存储
–as-sequencefile 将导入数据以SequenceFile文件存储
–as-textfile 以纯文本形式导入数据(默认)
–autoreset-to-one-mapper 如果没有拆分键可用,则将映射器的数量重置为一个映射器
–boundary-query 设置边界查询,检索主键的最大值和最小值
–columns <col,col,col…> 指定需要导入的列
–compression-codec 用于导入的压缩编解码器
–delete-target-dir 以删除模式导入数据(如果目标文件存在则删除再导入. 不指定时如果目标路径存在则报错)
–direct 使用直接导入快速路径
–direct-split-size 在直接模式导入时,将输入流按“n”字节分割
-e,–query 导入SQL“语句”的结果
–fetch-size 当需要更多行时,设置从数据库中获取的行数’n’,设置内联LOB的最大大小
-m,–num-mappers 使用n个map任务并行导入.默认并行度为4
–mapreduce-job-name 为生成的mapreduce作业设置名称
–merge-key 要用于合并结果的Key列(用于增量导入时重复数据的合并)
–split-by 用于分割工作单元的表的列
–split-limit 日期/时间/时间戳和整数类型的拆分列每次拆分的行上限。对于日期或时间戳字段,以秒为单位计算。拆分极限应该大于0
–table 读取的表名(要导入的表)
–target-dir 导入的表存放于HDFS中的目标路径
–validate 使用配置的验证器验证副本
–validation-failurehandler ValidationFailureHandler的完全限定类名
–validation-threshold ValidationThreshold的完全限定类名
–validator Validator的完全限定类名