1

入力データセットは次のようになります。

colA、colB、colc、時間

1,2,1,2012-12-22 12:23:30

1,2,3,2012-12-22 12:23:40

1,2,2,2012-12-22 12:24:20

2,3,1,2012-12-22 12:25:30

出力は、次回時刻と現在時刻の差、つまり (time+1 - time) になります。詳細については、出力列を参照してください。

colA、colB、colc、時間、出力

1,2,1,2012-12-22 12:23:30,10

1,2,2,2012-12-22 12:23:40,40

1,2,3,2012-12-22 12:24:20,0

2,3,1,2012-12-22 12:25:30,0

あなたの助けは大歓迎です

4

1 に答える 1

2

最初の 2 つの列がキーになるはずです。TextInputFormat入力テキスト ファイルを読み取るために使用します。Mapper は、Text オブジェクトを発行する必要がありますcolA_colB。例えば。データの

1,2,2012-12-22 12:23:30
1,2,2012-12-22 12:23:40
1,2,2012-12-22 12:24:20
2,3,2012-12-22 12:25:30

マッパーは (key, val) を取得します:

<some long integer X1>, "1,2,2012-12-22 12:23:30"
<some long integer X2>, "1,2,2012-12-22 12:23:40"
<some long integer X3>, "1,2,2012-12-22 12:24:20"
<some long integer X4>, "2,3,2012-12-22 12:25:30"

「いくつかの長い整数」は、入力ファイルの行のファイルオフセットに他なりません

Mapper は以下の (キー、値) 型Textのペアを発行する必要があります。

"1_2" , "2012-12-22 12:23:30"
"1_2" , "2012-12-22 12:23:40"
"1_2" , "2012-12-22 12:24:20"
"2_3" , "2012-12-22 12:25:30"

ご覧のとおり、キーは最初の 3 つのレコードで同じであり、それらは確実に同じリデューサーになります。レデューサーはこれを取得します:

"1_2" , ["2012-12-22 12:23:30", "2012-12-22 12:23:40", "2012-12-22 12:24:20"]
"2_3" , ["2012-12-22 12:25:30"]

レデューサーで、Text オブジェクトから String を取得し、それらを解析してJava Dateオブジェクトを生成します。その後、2つの日付の違いを取得するのは簡単です。

于 2013-05-31T11:18:04.093 に答える