Giraph的三个接口

Giraph中的图仅使用Edge接口和Vertex接口构造。Edge包含目标顶点的值/权重和 id。在 Giraph 的图模型中,一个顶点包含一个 ID、一个值和它所有外出的边的列表。Giraph 提供了这些接口的默认实现:DefaultVertex 和 DefaultEdge。这些接口还有其他实现

一、Edge接口

Edge 界面的类型变量如图 3.1 所示。边包含一个目标顶点 ID,它是类型变量 I ,边数据是类型变量 E 。类型 I 和 E 取决于图形类型。为加载图数据而选择/实现的 InputFormat 应该符合 edge 的类型变量。注意,我应该和在顶点中使用的类型相同,因为两者都表示一个顶点 id。下面是边接口的两种方法。

public interface Edge <I extends WritableComparable , E extends
Writable > {
 I getTargetVertexId();
 E getValue();
 }

在这里插入图片描述

二、Vertex接口

图 3.2 显示了Giraph顶点。它包含一个顶点 id、顶点值和它的外边列表。清单 3.2显示了顶点接口。它接受类型变量 I 的顶点 ID,类型变量 V 的顶点值,以及Edge 类的迭代。如前一节所解释的,边包含类型 I 的目标顶点 ID 和类型 E 的边值。类型 I、V 和 E 取决于您的图形类型,应该选择/实现匹配的 InputFormat 来加载图形数据。
在这里插入图片描述

public interface Vertex <I extends WritableComparable ,V extends Writable , E extends Writable > extends ImmutableClassesGiraphConfigurable <I, V, E> {
	void initialize(I id , V value , Iterable <Edge <I, E>> edges);
	void initialize(I id , V value);
	I getId();
	V getValue();
	void setValue(V value);
 	void voteToHalt();
 	int getNumEdges();
 	Iterable <Edge <I, E>> getEdges();
 	void setEdges( Iterable <Edge <I, E>> edges);
 	Iterable < MutableEdge <I, E>> getMutableEdges ();
 	E getEdgeValue(I targetVertexId);
 	void setEdgeValue(I targetVertexId , E edgeValue);
 	Iterable <E> getAllEdgeValues( final I targetVertexId);
 	void addEdge(Edge <I, E> edge);
 	void removeEdges(I targetVertexId);
 	void unwrapMutableEdges ();
 	void wakeUp();
 	boolean isHalted();
}

三、Computation 接口

Computation 接口代表了在每个 superstep 中应用到所有活顶点的计算。在 superstep 中可以有这个接口的几个实例,每个实例都在图顶点的一个分区上进行计算。注意,每个线程都有自己的计算,因此从这个类访问任何数据都是线程安全的。但是,访问全局数据(比如 WorkerContext 中的数据)不是线程安全的。此接口的对象只存在于单个 superstep 中。最重要且唯一必须编写的方法是 compute()方法。它的其他方法的使用取决于您正在实现的算法的类型。

参考书籍:《Large-Scale Graph Processing Using Apache Giraph》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值