Import 使用Sqoop导入表时出现主键错误
我尝试使用sqoop将所有表导入其中一个目录。但是其中一个表没有主键。这是我执行的代码Import 使用Sqoop导入表时出现主键错误,import,primary-key,sqoop,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/ 我得到以下错误: 导入期间出错:找不到表的主键 出口部门。请使用--s
sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera/retail_db"
--username=retail_dba
--password=cloudera
--warehouse-dir /user/cloudera/sqoop_import/
我得到以下错误:
导入期间出错:找不到表的主键
出口部门。请使用--split by或执行
带'-m 1'的顺序导入
看到
我知道我们可以使用--splity by
来导入单个表。是否有一种方法可以指定--splity by
来导入所有表命令。是否有一种方法可以在没有主键的情况下使用多个映射器进行多表导入。您需要使用:
不带主键的表将使用一个映射器导入,其他带有主键的表将使用默认映射器导入(4-如果未在sqoop
命令中指定)
- 正如@JaimeCr所说,您不能将
用于--split by
,但这只是从sqoop指南中引用的一句话,因为您遇到了以下错误: 如果表没有定义主键,并且未提供导入所有表
,则导入将失败,除非使用--split by>
或--num mappers 1
选项或使用--m 1
选项将映射器的数量显式设置为1--autoreset to one mapper
- 选项
通常与--autoreset to one mapper
工具一起使用,以自动处理架构中没有主键的表导入所有表
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/