Import 使用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将所有表导入其中一个目录。但是其中一个表没有主键。这是我执行的代码

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
    选项或使用
    --autoreset to one mapper
    选项将映射器的数量显式设置为1

  • 选项
    --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/
    

谢谢,我不知道该选项。