2016-08-20 9 views
0

My Sqoopインポートは1つのマップタスク(-m 1)でしか動作しません。Sqoopは1つのマップタスク(-m 1)でしか動作しません。

これは働いている:

sqoop import --connect jdbc:mysql://localhost/databaseY --username root --password PASSWORD --table tableX --target-dir /tmp/databaseY --as-textfile -m 1 

これはない:

sqoop import --connect jdbc:mysql://localhost/databaseY --username root --password PASSWORD --table tableX --target-dir /tmp/databaseY --as-textfile -m 3 

私クラスタはAWS上の3つのノードです。

設定中に何か不足しましたか?

----解決のための編集---- 問題はローカルホストでした。私はIPアドレスでそれを変更し、正常に動作しています。平行輸入を行う場合sqoop docsとして

+0

ソーステーブルにはPKがありますか? –

+0

両方のコマンドが同じです。あなたの質問を修正してください。 –

+0

開発:変更されました。最後の-mは今同じではありません。 BigDataLearner:正式なテストの例であるので、ソーステーブルはOKである必要があります。 – Selverine

答えて

1

は、

これにいくつかの光を置くのに十分である、Sqoopは、ワークロードを分割することが可能な基準を必要とします。 Sqoopは分割列を使用して作業負荷を分割します。デフォルトでは、Sqoopは、テーブル内の主キー列(存在する場合)を識別し、それを分割列として使用します。スプリット桁の低い値と高い値がデータベースから取得され、マップタスクは合計範囲の均等なサイズのコンポーネントで動作します。たとえば、最小値が0で最大値が1000で、Sqoopが4つのタスクを使用するように指示されたIDの主キー列を持つテーブルを持つ場合、SqoopはそれぞれがSELECT * FROM sometable WHERE id >= lo AND id < hiという形式のSQL文を実行する4つのプロセスを実行し、異なるタスクで(0、250)、(250,500)、(500,750)、および(750,1001)に設定された(lo、hi)を有する。


テーブルには、定義された主キーを持っていないと--split-by <col>が提供されていないマッパーの数が明示的に--num-mappers 1オプションで1に設定されていない限り、その後、インポートは失敗します。

(強調は私です)

編集:関連トピックのanswer私の前にも、この上で役立ちます。

関連する問題