命令分类(4大类)
-
sqoop import 单表导入
-
sqoop import-all-tables 批量导入
-
sqoop export 导出
-
sqoop job 多任务创建
格式:sqoop 命令1 --参数1 参数1值 --参数2 参数2值 ······ --参数n 参数n值
(通用) 数据库连接参数:
- --connect <(数据库连接地址)jdbc:mysql://IP:Port/数据库名?其他参数 >
- --username <用户名 >
- --password <密码 >
- --query < sql查询语句 where条件中需要包含$CONDITIONS >
- -–connection-manager <连接管理类名>
- -–driver <class-name> <驱动类名>
- -–connection-param-file <数据库参数文件名>
- -–table <关系数据库表名>
1.sqoop import 相关参数 sqoop import --参数1 参数1值 ···· --参数n 参数n值
打印相关参数
- –-help 打印帮助信息
- –-verbose 在控制台打印出详细信息
执行参数
- --m,–num-mappers <map数量,默认是4个>
- -–mapreduce-job-name 生成的mapreduce作业设置名称
模式参数
- --delete-target-dir 以删除模式导入数据(如果目标文件存在则删除再导入. 不指定时如果目标路径存在则报错) 模式
- --direct 直接导出模式(数据库自带工具,快)
保存文件参数
- -–target-dir <指定hdfs路径,import目标目录>
- -–as-textfile <将数据保存为文本文件
- -–as-avrodatafile <将数据保存为Avro数据文件
- -–as-sequencefile <将数据保存为sequence文件
- –-hadoop-home <Hadoop根目录>
- -–warehouse-dir <数据存放地址,与–target-dir不能同时用,适用于hdfs,不适用于导入hive>
格式化参数
- -–fields-terminated-by <字段结束符 默认'\001'(不可见方块)>
- -–lines-terminated-by <行结束符 '\n\r' >
- --null-string '\\N' null字符串处理 表级设置’serialization.null.format’参数
- --null-non-string '\\N' null字符串处理 和上面一起用
- -–enclosed-by <强制给字段值前后加上指定的字符>
- -–optionally-enclosed-by <只给带有双引号或单引号的字段值加上指定的符号 >
- -–escaped-by <给双引号作转义处理(例如\\ 使其失效)>
- -–split-by <字段名,用来切分工作单元,一般后面跟主键ID>
- -–mysql-delimiters <Mysql默认的分隔符设置(可不写,mysql数据库使用)
限定参数
- -–inline-lob-limit <对象数据类型的最大值限定>
- -–direct-split-size <字节数分块大小 >
控制参数
- -–columns <指定要导入的字段值 col1,col2,...coln>
- --z,–compress 压缩参数保存为文件是执行压缩
- -–compression-codec Hadoop压缩编码,默认是gzip
增量导入参数
- -–append <追加数据导入已经存在数据表>
- -–check-column 源列,以检查增量更改
- -–incremental 定义类型为“append”或“lastmodified”的增量导入
- -–last-value 增量检查列中最后导入的值
验证参数
- –validate 使用配置的验证器验证副本
- –validation-failurehandler ValidationFailureHandler的完全限定类名
- –validation-threshold ValidationThreshold的完全限定类名
- –validator Validator的完全限定类名
- –warehouse-dir 要导入hdfs的父路径
- –where 导入时使用WHERE条件过滤
Hive相关参数
- -–create-hive-table 导入时自动创建Hive表.如果目标hive表存在,则失败
- -–hive-database <hive数据库名称>
- -–hive-delims-replacement <自定义的字符串替换导入字符串字段中的Hive record \0x01和行分隔符(\n\r)>
- -–hive-drop-import-delims 从导入的字符串字段中删除Hive记录\0x01和行分隔符(\n\r)
- -–hive-home <$HIVE_HOME参数>
- -–hive-import 将表导入到Hive中
- -–hive-overwrite 重写Hive表中的现有数据(覆盖导入)
- -–hive-partition-key <导入hive的分区键>
- -–hive-partition-value <分区值>
- -–hive-table <hive表名>
- -–map-column-hive <指定列到hive类型的映射>
-HBase参数
扫描二维码关注公众号,回复: 12687003 查看本文章![]()
- -–column-family 设置导入的目标列族
- -–hbase-bulkload 启用HBase批量加载
- -–hbase-create-table 如果指定,创建缺少的HBase表
- -–hbase-row-key 指定要使用哪个输入列作为行键
- -–hbase-table 导入到HBase中的表名
2.sqoop import-all-tables 批量导入
- -–as-parquetfile <保存为parquet文件 文件路径\文件名>
- -–autoreset-to-one-mapper 如果没有拆分键可用,则将映射器的数量重置为一个映射器
- -–exclude-tables <导入所有表时要排除的表>
- -–fetch-size <从数据库中获取的行数>
3.sqoop export 导出 sqoop export --参数1 参数1值 ···· --参数n 参数n值
- -–verbose 作业执行时打印更多信息
- -–batch 指示以批处理模式执行的底层语句
- -–call 使用这个存储过程填充表(每行一个调用)
- -–clear-staging-table 清除中间临时表
- -–columns 指定导出的列,列名之间用逗号隔开
- -–staging-table 中间临时表
- -–table 需要导出的表
- -–update-key 按指定的键列更新记录
模式参数
- -–update-mode 指定在数据库中发现具有不匹配键的新行时如何执行更新.该模式有两种updateonly(默认)和allowinsert。
- updateonly:用于更新Hive表与目标表中数据不一致场景,即在不一致时,将Hive中的数据同步给目标表(如MySQL,Oracle等的目标表中),这种不一致是指,一条记录中的不一致,比如Hive表和MySQL中都有一个id=1的记录,但是其中一个字段的取值不同,则该模式会将这种差异抹除。对于“你有我无”的记录则“置之不理”。
- allowinsert:用于将Hive中有但目标表中无的记录同步到目标表中,但同时也会同步不一致的记录。这种模式可以包含updateonly模式的操作
4.sqoop job 多任务创建 sqoop job --参数1 参数1值 ···· --参数n 参数n值
作业(Job)管理参数
- -–create <创建 job名>
- -–delete <删除 job名>保存的作业
- -–exec <运行 job名>保存的作业
- -–list 查看Job列表
- -–meta-connect <为元数据指定JDBC连接字符串>
- -–show <显示 指定job名>
sqoop job案例:sql导入带hive中
sqoop job --create job_rpd --import --connect 'jdbc:sqlserver://IP:port;database=数据库名' \ --username 用户名 --password 密码 --table sql表名 --hive-import --hive-drop-import-delims --hive-database hive数据库 --hive-table hive表 --incremental append模式 --check-column 检查字段 --merge-key 合并字段 --last-value '检查字段值' -m 1;
其他参数
-HCatalog参数(Hive元数据导入参数)
- -–hcatalog-database <HCatalog数据库名称>
- -–hcatalog-home <$HCAT_HOME(即HIVE_HOME)>
- -–hcatalog-partition-keys 设置导入到hive时要使用的分区键
- -–hcatalog-partition-values 设置导入到hive时要使用的分区值
- -–hcatalog-table HCatalog表名(即Hive表)
- -–hive-home 覆盖 $HIVE_HOME
- -–hive-partition-key 设置导入到hive时要使用的分区键
- -–hive-partition-value 设置导入到hive时要使用的分区值
- -–map-column-hive 覆盖指定列到hive类型的映射
-HCatalog导入特定选项
- -–create-hcatalog-table 在导入之前创建HCatalog
- -–drop-and-create-hcatalog-table 在导入之前删除并创建HCatalog
- -–hcatalog-storage-stanza 用于创建表的HCatalog存储节
-Accumulo参数
- -–accumulo-batch-size 批处理大小(以字节为单位)
- -–accumulo-column-family 设置导入的目标列族
- -–accumulo-create-table 如果指定,则创建缺少的累加Accumulo表
- -–accumulo-instance Accumulo实例名
- -–accumulo-max-latency 最大写延迟(以毫秒为单位)
- -–accumulo-password Accumulo密码
- -–accumulo-row-key 指定要使用哪个输入列作为行键
- -–accumulo-table 导入到Accumulo中的表
- -–accumulo-user Accumulo用户名
- -–accumulo-visibility 要应用于导入的所有行的可见性令牌
- -–accumulo-zookeepers 逗号分隔的zookeeper列表(主机:端口号)
-代码生成的参数
- -–bindir 编译对象的输出目录
- -–class-name 设置生成的类名,覆盖 --package-name. 当与–jar-file组合时,设置input类.
- -–escape-mapping-column-names 禁用列名中转义的特殊字符
- -–input-null-non-string 输入空非字符串表示
- -–input-null-string 输入空字符串表示
- -–jar-file 禁用代码生成;使用指定的jar
- -–map-column-java 覆盖特定列到java类型的映射
- -–null-non-string 空非字符串表示(数值型默认初始化值:0)
- -–null-string 空字符串表示(即String默认初始化值:"")
- -–outdir 生成代码的输出目录
- -–package-name 将自动生成的类放在这个包中