2

HDFS 上のフラット ファイルを、行の更新がある可能性がある大規模なデータベース テーブルと同期させる最善の方法は何ですか?

sqoop などのツールは、テーブルから新しい行を段階的に抽出できるので便利なように思えますが、行の更新を処理する簡単な方法がわかりません。

行の更新を効率的に処理するには、どのような手法を使用できますか? 毎晩テーブル全体をダンプすることは避けたいことです。

4

2 に答える 2

1

毎晩変更されたデータのみを取得するために、mysql テーブルに updated_at フィールドを設定することを好みます。その後、単純な map reduce を実行して、古い状態に変更を適用 (マージ) します。

于 2011-04-01T11:58:20.820 に答える
1

以下にいくつかの提案を示します。

  • DBInputFormat を使用して、同期について心配しなければならない中間ファイルを用意する代わりに、データベースをジョブへの入力にします。MySQL がボトルネックになる場合は、分散型/NoSQL データベースを使用できます。
  • それでもフラット ファイルを使用したい場合は、毎晩、MySQL で変更された行のみをタイムスタンプと共にダンプできます。一意の各行の最新バージョンのみを出力する Hadoop ジョブを記述します。
于 2011-04-01T14:40:41.523 に答える