Sqoop常用命令及参数介绍
Sqoop常用命令介绍
| 命令 | 说明 |
|---|---|
| import | 用于将关系型数据库(如MySQL)的数据导入到HDFS、Hive、HBase等组件。 从业务数据库抽取数据到大数据平台,用于离线分析、数据仓库构建等。 |
| export | 用于将HDFS、Hive中的数据导出到关系型数据库。 将大数据分析结果(如统计报表、标签数据)同步回业务数据库,支撑业务决策。 |
| codegen | 用于根据关系型数据库表的结构自动生成对应的Java实体类和相关映射代码。这些生成的代码可用于自定义MapReduce任务中,方便对导入到Hadoop的数据进行结构化处理。 |
| create-hive-table | 根据关系型数据库表结构自动创建Hive表(字段名、类型自动映射)。 在将数据从数据库导入Hive前,快速生成匹配的表结构,避免手动编写CREATE TABLE语句。 |
| eval | 在关系型数据库中执行SQL语句(支持查询、新增、修改等),并返回结果。 用于验证数据库连接、测试SQL语句有效性、查看表数据量等(无需实际导入数据)。 |
| import-all-tables | 批量导入关系型数据库中所有表的数据到HDFS(每个表对应HDFS的一个目录)。 用于全库迁移场景(如数据库备份到HDFS),需注意仅支持无外键关联的表。 |
| job | 管理Sqoop任务(创建、执行、删除、列出定时任务),支持将常用命令保存为任务,便于重复执行。 用于自动化数据同步(如定时从MySQL导入数据到Hive)。 |
| list-databases | 列出关系型数据库中所有数据库名称。 用于查看目标数据库服务器中的可用数据库,验证连接权限。 |
| list-tables | 列出指定数据库中所有表名称。 用于查看目标数据库中的表结构,确定需要导入的表。 |
| merge | 合并HDFS中的两个数据集,生成新的合并结果。 用于增量数据同步场景(如每日增量数据与历史全量数据合并)。 |
| metastore | 启动Sqoop元数据服务,用于存储job命令创建的任务信息。 用于多节点共享Sqoop任务。 |
| help | 查看Sqoop命令的帮助信息(包括参数说明和用法示例)。 |
| version | 查看当前Sqoop的版本信息(包括内置依赖组件版本,如Hadoop、Hive等)。 |
更多Sqoop命令参数请参考Sqoop官方文档:https://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html。
公用参数介绍
| 分类 | 参数 | 说明 |
|---|---|---|
| 连接数据库 | --connect | 连接关系型数据库的url。 |
| --connection-manager | 指定连接管理类。 | |
| --driver jdbc | 连接驱动包。 | |
| --help | 帮助信息。 | |
| -P | 交互式输入连接数据库的密码。建议使用此参数避免信息泄漏,其他方式存在一定的安全风险。 | |
| --username | 连接数据库的用户名。 | |
| --verbose | 在控制台打印详细信息。 | |
| import参数 | --fields-terminated-by | 设定字段分隔符,和Hive表或HDFS文件保持一致。 |
| --lines-terminated-by | 设定行分隔符,和Hive表或HDFS文件保持一致。 | |
| --mysql-delimiters | MySQL默认分隔符设置。 | |
| export参数 | --input-fields-terminated-by | 字段分隔符。 |
| --input-lines-terminated-by | 行分隔符。 | |
| hive参数 | --hive-delims-replacement | 用自定义的字符替换数据中的\r\n等字符。 |
| --hive-drop-import-delims | 在导入数据到Hive时,去掉\r\n等字符。 | |
| --map-column-hive | 生成Hive表时可以更改字段的数据类型。 | |
| --hive-partition-key | 创建分区。 | |
| --hive-partition-value | 导入数据库指定分区。 | |
| --hive-home | 指定Hive安装目录。 | |
| --hive-import | 表示操作是从关系型数据库导入到Hive中。 | |
| --hive-overwrite | 覆盖Hive已有数据。 | |
| --create-hive-table | 创建Hive表,默认false,如果目标表不存在,则会创建目标表。 | |
| --hive-table | 指定Hive表。 | |
| --table | 关系型数据库表名。 | |
| --columns | 指定需要导入的关系型数据表字段。 | |
| --query | 指定查询语句,将查询结果导入。 | |
| hcatalog参数 | --hcatalog-database | 指定Hive库,使用hcatalog方式导入Hive库。 |
| --hcatalog-table | 指定Hive表,使用hcatalog方式导入Hive表。 | |
| 其他参数 | -m或--num-mappers | 后跟数字,表示sqoop任务的分片数。 |
| --split-by | 按照某一字段进行分片,配合-m。 | |
| --target-dir | 指定HDFS临时目录。 | |
| --null-string string | 类型为null时替换字符串。 | |
| --null-non-string | 非string类型为null时替换字符串。 | |
| --check-column | 增量判断的字段。 | |
| --incremental append或lastmodified | 增量导入参数:
| |
| --last-value | 指定一个值,用于标记增量导入。 | |
| --input-null-string | 替换null字符串,如果没有指定,则字符串null将被使用。 | |
| --input-null-non-string | 替换非String的null字符串,如果没有指定,则字符串null将被使用。 |