使用sqoop从RDBMS导入所有表

时间:2017-08-02 03:08:16

标签: hadoop sqoop sqoop2

我正在尝试使用sqoop将数据从测试mysql数据库导入hadoop。但是在某些表中,主表和某些表没有主键。

$sqoop import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test -P --warehouse-dir /home/user_all_tables
  

17/08/01 22:46:54错误tool.ImportAllTablesTool:导入时出错:   没有为表general_log找到主键。请明确说明   一个用--split-by或用' -m 1'执行顺序导入。

请建议我如何在sqoop命令行中使用split by。

1 个答案:

答案 0 :(得分:0)

要使import-all-tables工具有用,必须满足以下条件:

  • 每个表必须有一个单列主键。
  • 您必须打算导入每个表的所有列。
  • 您不得打算使用非默认拆分列,也不得通过WHERE子句强加任何条件。

默认选项不适合非主键表,因此无效。在这里,我将建议使用-m 1选项仅使用一个映射器来严格导入。

Sqoop命令:

import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test \ 
-P --warehouse-dir /home/user_all_tables -m 1