Pri*_*jan 2 import primary-key sqoop
我尝试使用sqoop将所有表导入到其中一个目录中.但是其中一个表没有主键.这是我执行的代码.
sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera/retail_db"
--username=retail_dba
--password=cloudera
--warehouse-dir /user/cloudera/sqoop_import/
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
导入期间出错:找不到表departments_export的主键.请使用--split-by指定一个或使用'-m 1'执行顺序导入.
通过在RDBMS中查看 没有主键的sqoop导入
我明白了,我们可以只使用--split-by单个表import.Is有什么办法可以指定--splity-by的Import-all-tables命令.有没有办法可以使用多个映射器进行多表导入而不使用主键.
你需要使用--autoreset-to-one-mapper:
没有主键的表将使用一个映射器导入,而其他表使用带有默认映射器的主键导入(4 - 如果未在sqoop命令中指定)
正如@JaimeCr所说,你不能使用--split-by,import-all-tables但这只是来自sqoop指南的错误,你得到的错误:
如果表没有定义主键
--split-by> <col>且未提供主键,则导入将失败,除非使用--num-mappers 1or--m 1选项或使用--autoreset-to-one-mapper选项将映射器的数量显式设置为1 .
该选项--autoreset-to-one-mapper通常与该import-all-tables工具一起使用,以自动处理模式中没有主键的表.
sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera/retail_db" \
--username=retail_dba \
--password=cloudera \
--autoreset-to-one-mapper \
--warehouse-dir /user/cloudera/sqoop_import/
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |