sqoop export 参数
时间: 2023-10-08 10:07:55 浏览: 139
Sqoop export 是将 Hadoop 中的数据导出到关系型数据库中的工具。下面是一些常用的 Sqoop export 参数:
1. --connect: 指定要连接的关系型数据库的 JDBC 连接地址。
2. --username: 指定连接数据库的用户名。
3. --password: 指定连接数据库的密码。
4. --table: 指定要插入数据的目标表名。
5. --export-dir: 指定要导出的 Hadoop 数据的目录。
6. --input-fields-terminated-by: 指定输入文件的字段分隔符。
7. --input-lines-terminated-by: 指定输入文件的行分隔符。
8. --input-null-string: 指定输入文件中表示 NULL 值的字符串。
9. --input-null-non-string: 指定输入文件中表示 NULL 值的非字符串形式。
10. --num-mappers: 指定并发执行导出任务的 Map 数量。
注意:参数的具体使用方式可以通过运行 sqoop help export 命令来查看。
相关问题
sqoop export 参数说明
sqoop export 是将 Hadoop 中的数据导出到关系型数据库中的工具,其常用参数说明如下:
- --connect:指定目标数据库的 JDBC 连接字符串。
- --username:指定连接数据库的用户名。
- --password:指定连接数据库的密码。
- --table:指定导出数据的目标表名。
- --export-dir:指定导出数据的 HDFS 路径。
- --input-fields-terminated-by:指定输入文件的字段分隔符,默认为逗号。
- --input-lines-terminated-by:指定输入文件的行分隔符,默认为换行符。
- --input-null-string:指定输入文件中表示 NULL 值的字符串,默认为 \N。
- --input-null-non-string:指定输入文件中表示 NULL 值的非字符串类型,默认为 \N。
sqoop 提交参数
### 如何正确配置和提交 Sqoop 参数
#### 提交 Sqoop 参数的方式
Sqoop 支持多种参数来定制化数据传输过程。这些参数可以通过命令行接口传递给 `sqoop` 命令[^1]。
对于常见的操作,如从关系型数据库管理系统 (RDBMS) 导入数据至 Hadoop 生态系统内的组件(例如 Hive 或者 HDFS),可以使用如下所示的基础命令结构:
```bash
sqoop import \
--connect jdbc:mysql://<host>:<port>/<database> \
--username <user_name> \
--password <password> \
--table <table_name>
```
此命令指定了连接字符串、用户名、密码以及目标表名等基本信息。
#### 使用特定功能所需的额外参数
为了实现更复杂的功能,比如增量导入或是指定输出文件格式,则需添加更多选项。例如,在执行增量导入时可加入以下参数:
```bash
--incremental lastmodified \
--check-column 'last_update' \
--last-value '<previous_max_value>'
```
这里设置了增量模式为基于最后修改时间戳(`lastmodified`),并提供了用于比较的时间字段 (`last_update`) 及上次最大值 `<previous_max_value>` 来决定哪些新纪录应该被拉取下来。
另外,如果希望调整每批次处理的数据量大小,可通过设置 `-m` 或者 `--num-mappers` 参数来控制并发度;而当涉及到特殊字符编码问题时,还可以利用 `--input-enclosed-by`, `--input-optionally-enclosed-by`, 和 `--input-escaped-by` 这样的输入解析参数来进行适当配置。
#### 关于更新或插入操作
针对更新已有记录的情况,除了常规的导入参数外,还需要特别注意 `--update-mode` 与 `--update-key` 的组合使用。前者决定了是采用允许重复键还是完全替换旧有条目的策略,后者则用来指出哪一列或多列为唯一标识符以便准确定位待更新的对象。值得注意的是,多个作为匹配依据的列之间应以逗号相隔开[^5]。
#### 示例:向 MySQL 数据库中的某张表追加新行
假设有一个名为 `employees` 的表格存在于远程 MySQL 实例上,并希望通过 Sqoop 将本地 CSV 文件里的新增员工信息同步过去而不影响已存在的记录,那么完整的命令可能看起来像这样:
```bash
sqoop export \
--connect jdbc:mysql://localhost/office_db \
--username root \
--password secret \
--table employees \
--export-dir /path/to/new_employees.csv \
--input-fields-terminated-by ',' \
--columns "id,name,position,salary"
```
上述指令实现了将位于 `/path/to/new_employees.csv` 下面的新雇员资料按照逗号分隔的形式读取出来并通过 JDBC 协议发送到对应的 SQL 表格里去。
阅读全文
相关推荐















