导入表时的主键错误使用Sqoop

时间:2016-07-30 00:45:24

标签: 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/

我收到以下错误:

  

导入期间出错:找不到表的主键   departments_export。请用--split-by指定一个或执行一个   使用' -m 1'顺序导入。

通过观察 sqoop import without primary key in RDBMS

我知道我们可以使用--split-by进行单个表导入。有一种方法可以为--splity-by命令指定Import-all-tables。有没有办法可以使用多个映射器进行多表导入而不使用主键。

1 个答案:

答案 0 :(得分:8)

您需要使用--autoreset-to-one-mapper

没有主键的表将使用一个映射器导入,其他表使用主键和默认映射器导入(4 - 如果未在sqoop命令中指定)

  • 正如@JaimeCr所说,您不能将--split-byimport-all-tables一起使用,但这只是来自sqoop指南的错误提示:

      

    如果表没有定义主键并且未提供--split-by> <col>,则导入将失败,除非将映射器的数量明确设置为--num-mappers 1或{{1}选项或使用--m 1选项。

  • 选项--autoreset-to-one-mapper通常与--autoreset-to-one-mapper工具一起使用,以自动处理模式中没有主键的表。

    import-all-tables