1

dept_id を主キーとする MySQL テーブル

|dept_id | dept_name |  
| 2 | Fitness   
| 3 | Footwear  
| 4 | Apparel   
| 5 | Golf      
| 6 | Outdoors  
| 7 | Fan Shop  

Sqoop クエリ

sqoop import \  
-m 2 \  
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \  
--username retail_dba \  
-P \  
--query 'select * from departments where dept_id < 6  AND $CONDITIONS' \      
--target-dir /user/cloudera/sqoop_import/departments;

コンソールでのエラーの結果:

クエリ結果を並行してインポートする場合は、次を指定する必要があります--split-by

---質問ポイント!---
テーブルには主キーがあり、分割は 2 つのマッパー間で均等に分散できますが、--spit-byまたは-m 1の必要性は何ですか??

同じように私を導いてください。
ありがとう。

4

3 に答える 3

0

sqoop docsに従って、

クエリの結果を並行してインポートする場合、各マップ タスクはクエリのコピーを実行する必要があり、結果は Sqoop によって推測された境界条件によって分割されます。クエリには、各 Sqoop プロセスが一意の条件式に置き換えるトークン $CONDITIONS を含める必要があります。--split-by を使用して分割列も選択する必要があります。

したがって、タグで主キーを指定する必要があります。--split-by

1 つのマッパーを選択すると、Sqoop はタスクを並列に分割せず、1 つのマッパーで完全なインポートを実行します。

マッパーの必要性と数を理解するために、私の別の回答(必要に応じて)を確認してください。$CONDITIONS

于 2016-08-11T18:30:03.887 に答える