偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MapReduce初級(jí)案例——單表關(guān)聯(lián)

大數(shù)據(jù)
“ 單表關(guān)聯(lián)”這個(gè)實(shí)例要求從給出的數(shù)據(jù)中尋找所關(guān)心的數(shù)據(jù),它是對(duì)原始數(shù)據(jù)所包含信息的挖掘。

 

[[173554]]

“ 單表關(guān)聯(lián)”這個(gè)實(shí)例要求從給出的數(shù)據(jù)中尋找所關(guān)心的數(shù)據(jù),它是對(duì)原始數(shù)據(jù)所包含信息的挖掘。下面進(jìn)入這個(gè)實(shí)例。

1 .實(shí)例描述

實(shí)例中給出 child-parent(孩子——父母)表,要求輸出 grandchild-grandparent(孫子——爺奶)表。

樣例輸入如下所示。

file:

家族樹(shù)狀關(guān)系譜:

樣例輸出如下所示。

file:

2 .設(shè)計(jì)思路

分析這個(gè)實(shí)例,顯然需要進(jìn)行單表連接,連接的是左表的 parent 列和右表的 child 列,且左表和右表是同一個(gè)表。

連接結(jié)果中除去連接的兩列就是所需要的結(jié)果——“ grandchild–grandparent”表。要用MapReduce 解決這個(gè)實(shí)例, 首先應(yīng)該考慮如何實(shí)現(xiàn)表的自連接; 其次就是連接列的設(shè)置;最后是結(jié)果的整理。

考慮到 MapReduce 的 shuffle 過(guò)程會(huì)將相同的 key 會(huì)連接在一起,所以可以將 map 結(jié)果的 key 設(shè)置成待連接的列,然后列中相同的值就自然會(huì)連接在一起了。再與最開(kāi)始的分析聯(lián)系起來(lái):

要連接的是左表的 parent 列和右表的 child 列,且左表和右表是同一個(gè)表,所以在 map階段將讀入數(shù)據(jù)分割成 child 和 parent 之后,會(huì)將 parent 設(shè)置成 key, child 設(shè)置成 value進(jìn)行輸出,并作為左表;再將同一對(duì) child 和 parent 中的 child 設(shè)置成 key, parent 設(shè)置成value 進(jìn)行輸出,作為右表。

為了區(qū)分輸出中的左右表,需要在輸出的 value 中再加上左右表的信息,比如在 value 的 String 最開(kāi)始處加上字符 1 表示左表,加上字符 2 表示右表。

這樣在 map 的結(jié)果中就形成了左表和右表,然后在 shuffle 過(guò)程中完成連接。 reduce 接收到連接的結(jié)果,其中每個(gè) key 的 value-list 就包含了“ grandchild–grandparent”關(guān)系。

取出每個(gè)key 的 value-list 進(jìn)行解析,將左表中的 child 放入一個(gè)數(shù)組, 右表中的 parent 放入一個(gè)數(shù)組,然后對(duì)兩個(gè)數(shù)組求笛卡爾積就是最后的結(jié)果了。

3 .程序代碼

程序代碼如下所示。

 

 4 .代碼結(jié)果

準(zhǔn)備測(cè)試數(shù)據(jù)

通過(guò) Eclipse 下面的“ DFS Locations”在“ /user/hadoop”目錄下創(chuàng)建輸入文件“ STjoin_in”文件夾( 備注:“ STjoin_out”不需要?jiǎng)?chuàng)建。)如圖 4.4-1 所示,已經(jīng)成功創(chuàng)建。

然后在本地建立一個(gè) txt 文件,通過(guò) Eclipse 上傳到“ /user/hadoop/STjoin_in”文件夾中,一個(gè) txt 文件的內(nèi)容如“實(shí)例描述”那個(gè)文件一樣。如圖 4.4-2 所示,成功上傳之后。

從 SecureCRT 遠(yuǎn)處查看“ Master.Hadoop”的也能證實(shí)我們上傳的文件,顯示其內(nèi)容如圖 4.4-3 所示:

運(yùn)行詳解

( 1) Map 處理:

map 函數(shù)輸出結(jié)果如下所示。

( 2) Shuffle 處理

在 shuffle 過(guò)程中完成連接。

首先由語(yǔ)句“ 0 != grandchildnum && 0 != grandparentnum”得知,只要在“ value-list”中沒(méi)有左表或者右表,則不會(huì)做處理,可以根據(jù)這條規(guī)則去除無(wú)效的 shuffle 連接。

然后根據(jù)下面語(yǔ)句進(jìn)一步對(duì)有效的 shuffle 連接做處理。

針對(duì)一條數(shù)據(jù)進(jìn)行分析:

分析結(jié)果: 左表用“ 字符 1”表示, 右表用“ 字符 2”表示,上面的

中的“ key”表示左表與右表的連接鍵。而“ value-list”表示以“ key”連接的左表與右表的

相關(guān)數(shù)據(jù)。

根據(jù)上面針對(duì)左表與右表不同的處理規(guī)則,取得兩個(gè)數(shù)組的數(shù)據(jù)如下所示:

然后根據(jù)下面語(yǔ)句進(jìn)行處理。

處理結(jié)果如下面所示:

其他的有效 shuffle 連接處理都是如此。

(3)查看運(yùn)行結(jié)果

這時(shí)我們右擊 Eclipse 的“ DFS Locations”中“ /user/hadoop”文件夾進(jìn)行刷新,這時(shí)會(huì)發(fā)現(xiàn)多出一個(gè)“ STjoin_out”文件夾,且里面有 3 個(gè)文件,然后打開(kāi)雙其“ part-r-00000”文件,會(huì)在 Eclipse 中間把內(nèi)容顯示出來(lái)。如圖 4.4-4 所示。

 

責(zé)任編輯:趙寧寧 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2016-10-14 23:16:50

數(shù)據(jù)排序數(shù)據(jù)原始數(shù)據(jù)

2013-04-24 10:47:48

Hadoop集群

2009-09-25 10:58:07

Hinerbate單端

2013-10-16 16:38:39

鏈表矩陣

2010-10-15 10:37:27

MySQL創(chuàng)建關(guān)聯(lián)表

2010-11-23 11:36:15

MySQL創(chuàng)建關(guān)聯(lián)表

2021-05-29 10:22:49

單例模式版本

2010-10-15 14:39:55

MySQL單表大小

2022-10-20 09:26:24

MySQLOracleSqlServer

2010-07-19 09:28:37

Perl關(guān)聯(lián)數(shù)組

2011-06-28 14:02:49

表分區(qū)

2024-04-01 08:00:00

MySQL關(guān)聯(lián)設(shè)計(jì)數(shù)據(jù)庫(kù)

2010-09-25 16:42:45

sql語(yǔ)句

2021-03-10 09:38:44

JeecgBoot 單表數(shù)據(jù)sheet實(shí)例

2011-05-07 16:03:56

單頁(yè)網(wǎng)站網(wǎng)站設(shè)計(jì)

2018-11-14 14:33:33

MapReduce數(shù)據(jù)集計(jì)算

2010-08-04 09:55:34

LINQ to SQL

2010-11-22 13:13:30

MySQL模糊查詢(xún)

2011-10-18 14:00:30

MapReduce分布式流式

2010-11-22 14:05:53

MySQL單表大小
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)