1.在Vertex類中,頂點的存儲方式采用鄰接表形式。每個頂點有 VertexId、VertexValue、OutgoingEdges和Halt,boolean型的halt變量用于記錄頂點的狀態(tài),false時表示active,true表示inactive狀態(tài)。 片段代碼如下。
創(chuàng)新互聯(lián)專注于東港企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),成都做商城網(wǎng)站。東港網(wǎng)站建設(shè)公司,為東港等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
2.org.apache.giraph.edge.Edge 接口,用于存儲頂點的邊,每條邊包含targetVertexId和edgeValue兩個屬性。類關(guān)系圖如下:
Giraph默認使用DefaultEdge類存儲邊,該類中有兩個變量: I targetVertexId和 E value,I為頂點ID的類型,E為邊的類型。注意,DefaultEdge類同時繼承ReusableEdge<I,E>接口,在ReusableEdge<I,E>類的定義中,有如下說明文字:
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.
從上述說明文字可知,edge可以被重用,只需要修改targetVertexId和value的值就行。即每個Vertex若有多條出邊,只會創(chuàng)建一個DefaultEdge對象來存儲邊。
3.org.apache.giraph.edge.OutEdges 用于存儲每個頂點的out-edges。從Vertex類的定義可知,頂點的每條邊都被存儲在OutEdges類型的edge對象中,OutEdges接口的關(guān)系圖如下:
Giraph默認的使用ByteArrayEdges<I,E>,每個頂點的所有邊都被存儲在byte[ ]中。當頂點向它的出邊發(fā)送消息時,需要遍歷Vertex類中的edges對象。示例代碼如下:
注意:由DefaultEdge的定義可知,遍歷getEdges時,返回的Edge對象時同一個對象,只是該對象中值改變了。下面繼續(xù)查看代碼來證明此觀點。
查看ByteArrayEdges類的iterator()方法,如下:
返回的是內(nèi)部類ByteArrayEdgeIterator對象,定義如下:
總結(jié):當頂點的出度很大時,此優(yōu)化甚好,能很好的節(jié)約內(nèi)存。如UK-2005數(shù)據(jù)中,頂點的大出度為 5213。
假設(shè)頂點1的出度頂點有<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元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞標題:Giraph源碼分析(六)——Edge分析-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article6/jepog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、全網(wǎng)營銷推廣、企業(yè)建站、響應(yīng)式網(wǎng)站、域名注冊、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容