1.在Vertex類(lèi)中,頂點(diǎn)的存儲(chǔ)方式采用鄰接表形式。每個(gè)頂點(diǎn)有 VertexId、VertexValue、OutgoingEdges和Halt,boolean型的halt變量用于記錄頂點(diǎn)的狀態(tài),false時(shí)表示active,true表示inactive狀態(tài)。 片段代碼如下。
2.org.apache.giraph.edge.Edge 接口,用于存儲(chǔ)頂點(diǎn)的邊,每條邊包含targetVertexId和edgeValue兩個(gè)屬性。類(lèi)關(guān)系圖如下:
Giraph默認(rèn)使用DefaultEdge類(lèi)存儲(chǔ)邊,該類(lèi)中有兩個(gè)變量: I targetVertexId和 E value,I為頂點(diǎn)ID的類(lèi)型,E為邊的類(lèi)型。注意,DefaultEdge類(lèi)同時(shí)繼承ReusableEdge<I,E>接口,在ReusableEdge<I,E>類(lèi)的定義中,有如下說(shuō)明文字:
A complete edge, the target vertex and the edge value. Can only be one edge with a destination vertex id per edge map. This edge can be reused, that is you can set it's target vertex ID and edge value. Note: this class is useful for certain optimizations, but it's not meant to be exposed to the user. Look at MutableEdge instead.
從上述說(shuō)明文字可知,edge可以被重用,只需要修改targetVertexId和value的值就行。即每個(gè)Vertex若有多條出邊,只會(huì)創(chuàng)建一個(gè)DefaultEdge對(duì)象來(lái)存儲(chǔ)邊。
3.org.apache.giraph.edge.OutEdges 用于存儲(chǔ)每個(gè)頂點(diǎn)的out-edges。從Vertex類(lèi)的定義可知,頂點(diǎn)的每條邊都被存儲(chǔ)在OutEdges類(lèi)型的edge對(duì)象中,OutEdges接口的關(guān)系圖如下:
Giraph默認(rèn)的使用ByteArrayEdges<I,E>,每個(gè)頂點(diǎn)的所有邊都被存儲(chǔ)在byte[ ]中。當(dāng)頂點(diǎn)向它的出邊發(fā)送消息時(shí),需要遍歷Vertex類(lèi)中的edges對(duì)象。示例代碼如下:
注意:由DefaultEdge的定義可知,遍歷getEdges時(shí),返回的Edge對(duì)象時(shí)同一個(gè)對(duì)象,只是該對(duì)象中值改變了。下面繼續(xù)查看代碼來(lái)證明此觀(guān)點(diǎn)。
查看ByteArrayEdges類(lèi)的iterator()方法,如下:
返回的是內(nèi)部類(lèi)ByteArrayEdgeIterator對(duì)象,定義如下:
總結(jié):當(dāng)頂點(diǎn)的出度很大時(shí),此優(yōu)化甚好,能很好的節(jié)約內(nèi)存。如UK-2005數(shù)據(jù)中,頂點(diǎn)的大出度為 5213。
假設(shè)頂點(diǎn)1的出度頂點(diǎn)有<2 , 0.4>,<3 , 7.8> ,<5 , 6.4> 。如下代碼:
輸出結(jié)果為:
[ 2 ]
[ 3 , 3 ]
[ 5 , 5 , 5 ]
并非是希望的 [ 2 , 3 , 5 ]
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞標(biāo)題:Giraph源碼分析(六)——Edge分析-創(chuàng)新互聯(lián)
分享地址:http://www.2m8n56k.cn/article6/jepog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、全網(wǎng)營(yíng)銷(xiāo)推廣、企業(yè)建站、響應(yīng)式網(wǎng)站、域名注冊(cè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
營(yíng)銷(xiāo)型網(wǎng)站建設(shè)知識(shí)