簡體   English   中英

java hadoop mapreduce實現計數並發

[英]java hadoop mapreduce implement count concurrency

如何在Java中使用hadoop mapreduce實現它?

在蜂巢中,我有一個包含很多列的表,其中兩個是begin_time,end_time。

我每次都要數一下

一張桌子是這樣的:

begin_time                  end_time
2011.04.26 10:19:06^A2011.04.26 10:20:22
2011.04.26 10:19:08^A2011.04.26 10:21:49
2011.04.26 10:19:08^A2011.04.26 11:18:46
2011.04.26 10:19:09^A2011.04.26 12:08:36
2011.04.26 10:19:09^A2011.04.26 11:00:16
2011.04.26 10:19:11^A2011.04.26 10:19:17
2011.04.26 10:19:12^A2011.04.26 10:46:21
2011.04.26 10:19:13^A2011.04.26 10:55:43
2011.04.26 10:19:17^A2011.04.26 10:19:41
2011.04.26 10:19:18^A2011.04.26 10:34:41

我想要的結果是在特定時間有多少人。

例如,在2011.04.26 10:19:08上,有3位訪客在賽道上,19:06一位,2位在19:08。

和2011.04.26 10:19:18為9,課程10,但在2011.04.26 10:19:17休假

所需的結果是

2011.04.26 10:19:06 1
2011.04.26 10:19:08 3
2011.04.26 10:19:09 5
2011.04.26 10:19:11 6
2011.04.26 10:19:12 7
2011.04.26 10:19:13 8
2011.04.26 10:19:17 9
2011.04.26 10:19:18 9

任何幫助深表感謝和歡迎。

在映射器中,您將每個記錄轉換為兩個記錄-一個用於記錄的開始時間,一個用於結束時間。 因此,如果您只有一個減速器,則將它們排序為:


Time                Begin/End
2011.04.26 10:19:06 B
2011.04.26 10:19:08 B
2011.04.26 10:19:08 B
2011.04.26 10:19:09 B
2011.04.26 10:19:09 B
2011.04.26 10:19:11 B
2011.04.26 10:19:12 B
2011.04.26 10:19:13 B
2011.04.26 10:19:17 E
2011.04.26 10:19:17 B
2011.04.26 10:19:18 B
2011.04.26 10:19:41 E
2011.04.26 10:20:22 E
2011.04.26 10:21:49 E
2011.04.26 10:34:41 E
2011.04.26 10:46:21 E
2011.04.26 10:55:43 E
2011.04.26 11:00:16 E
2011.04.26 11:18:46 E
2011.04.26 12:08:36 E

並可以按以下順序處理它們:每次遇到“ B”時增加數目,而遇到“ E”時減少數目。 為了獲得結果,您需要在時間更改時從減速器發出記錄,並且該時間至少有一個“ B”。


Time                Begin/End      N        Emit
2011.04.26 10:19:06 B              1          1
2011.04.26 10:19:08 B              2
2011.04.26 10:19:08 B              3          3
2011.04.26 10:19:09 B              4
2011.04.26 10:19:09 B              5          5
2011.04.26 10:19:11 B              6          6
2011.04.26 10:19:12 B              7          7
2011.04.26 10:19:13 B              8          8
2011.04.26 10:19:17 E              7
2011.04.26 10:19:17 B              8          8
2011.04.26 10:19:18 B              9          9
2011.04.26 10:19:41 E              8
2011.04.26 10:20:22 E 7 2011.04.26 10:21:49 E 6 2011.04.26 10:34:41 E 5 2011.04.26 10:46:21 E 4 2011.04.26 10:55:43 E 3 2011.04.26 11:00:16 E 2 2011.04.26 11:18:46 E 1 2011.04.26 12:08:36 E 0

如果您提前知道沒有事件的時間,則可以創建分區程序,它將數據分為獨立的集合,並且可以使用多個reducer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM