0

私は Cassandra ColumnFamily に 2 つの行があり、列の値を同じ列名と比較したいです。

CF: ユーザー

キー: 列:
................................................................. .........

K1: {Col1: "アンディ" V1: "100"} {Col2: "トム" V2: "100"}

K2: {Col1: "アンディ" V1: "120"} {Col2: "トム" V2: "90"}

ここで、K2 列と K1 列の違いを比較して、Cassandra でこの結果を取得します。

キー: 列:
................................................................. ...................................

K1: {Col1: "アンディ" V1: "100"} {Col2: "トム" V2: "100"}

K2: {Col1: "アンディ" V1: "120" 差分: 20} {Col2: "トム" V2: "90" 差分: -10}

最初は Hadoop でこれをコーディングしたいのですが、Map プロセスに 2 つのキーを定義できないという問題がありますか?

スケーラブルなソリューションである必要があるため、Haddop が選択されました。

誰かがヒントを持っていることを願っていますか?

BG、ダニー

4

1 に答える 1

0

減算の底がどの行で表されるかわかりませんか? K1[V1]-K2[V1] またはその逆?

OK、最近のタイムスタンプを持つ行がベースになるとしましょう。

Map ステップは次のように出力する必要があります (K => V):

// each value is a WritableComparable object to allow sorting by timestamp

"Andy" => {"key":K1, "value":100, timestamp1} 
"Tom"  => {"key":K1, "value":100, timestamp2} 
"Andy" => {"key":K2, "value":120, timestamp3} 
"Tom"  => {"key":K2, "value":90,  timestamp4} 

Reduce ステップは、各値がタイムスタンプでソートされるため、ペアの配列を受け取ります。

"Andy" => [ {"key":K1, "value":100, timestamp1},
            {"key":K2, "value":120, timestamp3} ]

"Tom"  => [ {"key":K1, "value":100, timestamp2},
            {"key":K2, "value":90,  timestamp4} ]

削減ステップでは、減算を簡単に実行して、「diff」などの必要な列をデータベースに書き込むことができます

于 2013-07-06T14:47:13.963 に答える