Sqoop 是一款用于在 Hadoop 与关系型数据库之间进行数据传输的工具,它有很多参数,可分为通用参数、导入参数和导出参数等,以下是一些常见的参数介绍:
通用参数
- --connect
- 说明:指定要连接的关系型数据库的 JDBC URL。
- 示例:
--connect jdbc:mysql://localhost:3306/mydb
- --username
- 说明:指定连接数据库的用户名。
- 示例:
--username root
- --password
- 说明:指定连接数据库的密码。为了安全起见,也可以使用
--password-file
参数来指定包含密码的文件。 - 示例:
--password mypassword
- 说明:指定连接数据库的密码。为了安全起见,也可以使用
- --verbose
- 说明:启用详细模式,在运行过程中打印出更多的信息,有助于调试和了解操作的执行情况。
- 示例:
--verbose
- --help
- 说明:打印出 Sqoop 的帮助信息,列出所有可用的参数及其用法。
- 示例:
--help
导入参数
- --table
- 说明:指定要从关系型数据库导入数据的表名。
- 示例:
--table users
- --columns
- 说明:指定要导入的列,多个列之间用逗号分隔。
- 示例:
--columns id,name,age
- --where
- 说明:使用 SQL 的
WHERE
子句来过滤要导入的数据。 - 示例:
--where "age > 18"
- 说明:使用 SQL 的
- --split-by
- 说明:指定用于分割数据的列,Sqoop 会根据该列的值将数据分成多个部分,并行导入到 Hadoop 中,提高导入效率。
- 示例:
--split-by id
- --num-mappers
- 说明:指定用于导入数据的 Mapper 数量,默认值为 4。
- 示例:
--num-mappers 8
- --target-dir
- 说明:指定 HDFS 上用于存储导入数据的目标目录。
- 示例:
--target-dir /user/hadoop/imported_data
导出参数
- --export-dir
- 说明:指定 HDFS 上包含要导出数据的目录。
- 示例:
--export-dir /user/hadoop/export_data
- --input-fields-terminated-by
- 说明:指定输入数据中字段的分隔符,默认是逗号。
- 示例:
--input-fields-terminated-by '\t'
- --update-key
- 说明:指定用于更新关系型数据库中记录的键列。如果指定了该参数,Sqoop 会使用
UPDATE
语句来更新数据;如果未指定,则使用INSERT
语句插入新记录。 - 示例:
--update-key id
- 说明:指定用于更新关系型数据库中记录的键列。如果指定了该参数,Sqoop 会使用
- --update-mode
- 说明:指定更新模式,有
updateonly
和allowinsert
两种模式。updateonly
表示只更新已存在的记录,不插入新记录;allowinsert
表示如果记录不存在则插入新记录。 - 示例:
--update-mode updateonly
- 说明:指定更新模式,有
其他参数
- --driver
- 说明:指定用于连接关系型数据库的 JDBC 驱动类。通常情况下,Sqoop 可以自动检测驱动,但在某些特殊情况下可能需要手动指定。
- 示例:
--driver com.mysql.jdbc.Driver
- --map-column-java
- 说明:指定从关系型数据库列到 Java 数据类型的映射。
- 示例:
--map-column-java id=Integer,name=String,age=Integer