1。在顶点类中,顶点的存储方式采用邻接表形式,每个顶点有VertexId, VertexValue, OutgoingEdges和停止,布尔型的停止变量用于记录顶点的状态,假时表示活跃,真表示不活跃的状态。片段代码如下。
2. org.apache.giraph.edge.edge接口,用于存储顶点的边,每条边包含targetVertexId和edgeValue两个属性。类关系图如下:
Giraph默认使用DefaultEdge类存储边,该类中有两个变量:我targetVertexId和E值,我为顶点ID的类型、E为边的类型。注意,DefaultEdge类同时继承ReusableEdge<我,E>接口,在ReusableEdge<我,E>类的定义中,有如下说明文字:
一个完整的边缘,目标顶点和边值。可以alt=" Giraph源码分析(六)——边缘分析">
Giraph默认的使用ByteArrayEdges<我E>每个顶点的所有边都被存储在byte[]中。当顶点向它的出边发送消息时,需要遍历顶点类中边缘的对象。示例代码如下:
总结:当顶点的出度很大时,此优化甚好,能很好的节约内存。如英国- 2005数据中,顶点的最大出度为5213。
假设顶点1的出度顶点有& lt; 2、0.4祝辞,& lt; 3、7.8比;& lt; 5, 6.4比;