2017-05-12 15 views
0

過去の負荷をかけながらチャンク内のデータを並べ替える方法を理解しようとしています。履歴負荷中にデータをチャンクにロードするSqoop

私は3年のデータを持ち、sqoopをトリガすると、すべてのデータを一度にフェッチしてHDFSをプッシュするシナリオを考えてみましょう。

私はクラスターに圧力をかけるのを避けたいのですが、上記の代わりに3年分のデータを一度に読み込むのではなく、1か月のチャンクでデータをロードするようにsqoopに指示する方法があります。

答えて

0

いつでも--queryオプションを使用してテーブルを月単位でフィルタリングし、これが一度だけ考えられる場合は36日間のプロセスを繰り返すことができます。

あなたのHadoopのバージョンによっては、年と月(月単位)で分割する--split-byオプションを使うこともできます。これは、sqoopプロセスの各マッパーが1か月にsqoopし、 1

https://issues.apache.org/jira/browse/MAPREDUCE-5583

+0

に同時に実行しているマッパーは、私は1つのマッパーは1ヶ月のデータを処理する必要はありません。私の質問は、過去1か月間のデータをマッパーに分散して、ロード中にロードプロセスを固定することです。だから理想的には、すべてのsqoopコールは36時間(3年)のすべてのデータをシングルスクープコールで取得するのではなく、一度に1カ月分のデータを持ち出すことになります。 – Shashi

+0

は実行できません - 私は--queryを使用するように提案された36の独立したsqoops?あなたのシナリオは明確ではありません。 ..あなたが何をしたいか指定する – hlagos

+0

これを実現するには、 '-m(または--num-mappers)'とwhere節を組み合わせて使うことができます。 'where'節は1ヶ月目のデータを表示し、その後はデータを表示しません。指定されたマッパーのうち、そのデータを転送用に分割します。 – vmorusu

関連する問題