1億行を超える大きなテーブルを含むデータベースがあります。このデータをエクスポートし(このテーブルを他のいくつかのテーブルと結合したり、いくつかのフィールドをクリーンアップしたりするなどの変換後)、後でHadoopで処理できるように、大きなテキストファイルに保存します。
これまでのところ、私は2つのことを試しました。
Pythonを使用して、このサブクエリのトリックを使用してチャンク(通常は一度に10000レコード)でテーブルを参照し、各行で変換を実行して、テキストファイルに直接書き込みます。トリックは役に立ちますが
LIMIT
、エクスポートが進むにつれて、はだんだん遅くなります。これではテーブル全体をエクスポートできませんでした。mysql
コマンドラインツールを使用して、クエリの結果をCSV
フォームでテキストファイルに直接出力しようとしました。サイズが原因で、メモリが不足してクラッシュしました。
現在、データを直接インポートするツールとしてSqoopを調査していますHDFS
が、他の人がこのような大規模なエクスポートをどのように処理するのか疑問に思いました。