2017-08-02 83 views
0

我想從測試mysql數據庫導入數據到使用sqoop的hadoop。但是在一些表中有主表和一些表沒有主鍵。使用sqoop從RDBMS導入所有表格

$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秒ERROR tool.ImportAllTablesTool:進口過程中的錯誤: 沒有主鍵可以爲表general_log找到。請使用--split-by指定 ,或使用'-m 1'執行順序導入。

請教我如何在sqoop命令行中使用split。

回答

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 
+0

謝謝桑迪普 – DevPerson

+0

而不是設置-m 1單一映射器,你可以嘗試另一種選擇。使用--spilt-by並指定具有唯一值的列。 – kumsgs

+0

@kumsgs - 是的!但是在那種情況下,他必須調查所有非主鍵表,找出用'--split-by' –