2017-09-07 5 views
0

私はOLTPシステムに注文テーブルを持っています。 各注文レコードには、OrderStatusフィールドがあります。hdfsの大きなテーブルの変更を反映

  • エンドユーザーが注文を作成した場合は、オーダーステータスフィールドが「オープン」に設定してください。誰かが注文をキャンセルした場合、オーダーステータスフィールドは "キャンセル" として設定

  • 。注文処理は「閉じる」に、(請求書に変換)オーダーステータス・フィールド・セットを終え

OLTPシステムでテーブル内の複数億件のレコードがあります。

hdfsレイヤーのデータウェアハウスとデータマートを設計して入力する必要があります。 データマートを設計するには、hdfsにオーダーテーブル全体をインポートしてから、テーブルの変更を継続的に反映する必要があります。

最初に、最初のロードプロセスでsqoopを使用してテーブル全体をhdfsにインポートできます。私は長い時間がかかるかもしれませんが、私はこれを一度やります。

注文記録が更新されたり、新しい注文記録が入力された場合、hdfsの変更を反映する必要があります。どのようにしてhdfsでこれを実現できますか?簡単な方法の

おかげ

答えて

-2

一つは、データベースがOLTPソースDBにトリガされ、すべての更新があなたのHadoop環境に更新イベントをプッシュするトリガの使用を起こる変更で動作するようです。

一方、(データユーザーの要件によりますが)毎晩、データダンプ全体をリロードするだけで十分です。

また、最後に変更されたタイムスタンプがある場合は、最新のデータのみを読み込んで何らかのデルタチェックを行う可能性があります。

これはすべて、お客様のデータ構造、要件、お手元のリソースに依存します。

これにはいくつかの方法がありますが、通常はメッセージング、開発、新しいサーバーが必要です。このインフラストラクチャまたはそれらのリソースは利用できません。

EDIT

あなたが最後に変更された日付を持っているので、あなたが

SELECT columns FROM table WHERE lastchangedate < (now - 24 hours) 

または何積載のためのあなたの間隔があるかもしれないようなステートメントを使用してデータを取得することができるかもしれません。

次に、sqoopまたはETLツールなどでデータを処理します。レコードが既にHadoop環境で使用可能な場合は、UPDATEにします。レコードが利用できない場合は、適切な仕組みでINSERTを入力します。これは時々UPSERTINGと呼ばれます。

+0

はい、最後に変更されたタイムスタンプフィールドは、ソーステーブルに存在しています。詳細を教えてください:「最新のデータだけを読み込んで、何らかのデルタチェックを行う可能性があります」 – Omer

+1

あなたのコメントをいただきありがとうございます、使用可能なオプションをhadoop環境でアップしていますか?私が知っているように、hdfsは読み取り専用です。だから、私はhdfs層でテーブル全体を上書きする必要があるかもしれません。 – Omer

+0

これは必要なアクションの単なる言葉です。これは実際にインフラストラクチャ、使用するコンポーネント、および所要量によって異なります。 HDFSは読み取り専用ではなく、すでにSqoopでデータをプッシュしています。変更によって新しいファイルが作成される可能性もありますが、これはデータをHadoopにプッシュした後の読み方によって異なります。また、Hive、HBASE、一般的にはHadoopのようなHDFSを使用するコンポーネントを検索する必要があります。 HDFSはエコスペース全体の一部にすぎません。 – tobi6

関連する問題