2013-05-31 64 views
1

輸入數據集看起來像下面所示:在地圖縮小中解決這個問題的最佳方法是什麼?

可樂,COLB,COLC,時間

1,2,1,2012-12-22 12點23分三十秒

1,2- ,3,2012-12-22 12點23分40秒

1,2,2,2012-12-22 12點24分二十秒

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

並且輸出將是下一次和當前時間的差,即,(時間+ 1 - 時間)。請參閱輸出欄獲取更多信息。

可樂,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

高度讚賞您的幫助

回答

2

前兩列應該是關鍵。使用TextInputFormat來讀取輸入文本文件。 Mapper應該發出Text object這將是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 

映射器將獲得(鍵,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" 

的「一些長整型」是什麼,但在文件中輸入文件

映射線的偏移量應下面發射(鍵,值)對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"] 

在減速,get the String from the Text objects和解析那些產生Java Date對象。之後獲得兩個日期之間的差異將是直截了當的。

+0

嗨tejas,我的壞我想我很困惑你一點點..請參閱更新的說明 – Maverick

+0

是輸入數據的一些文件?即使有更新的描述,我不認爲我的最初答案會改變。 –

+0

是輸入數據在文件中......但是記錄可能不會到單個映射器......它可能不是連續的......它可以分佈在 – Maverick

相關問題