每个Vertex维护一个数组结构

时间:2015-01-15 00:05:10

标签: hadoop giraph

纵观Giraph图,我需要在Vertex基础上维护一个数组来存储几个" health"在顶点级别完成检查。

如果它像编写一个新的输入格式一样简单吗?

我担心的是,为图表提供的实际数据不需要知道这个数组。

1 个答案:

答案 0 :(得分:1)

如果数组只是用于在不需要读取的步骤之间进行临时计算,也不需要写入数据,则无需从任何地方读取数据。

您需要创建一个implements Writable的新班级。您将把数组存储在此类中,并处理超级步之间的序列化/反序列化。这是在两个函数中完成的:

@Override
public void write(DateOutput dataOutput) throws IOException {
  . . . .
}

@Override
public void readFields(DataInput dataInput) throws IOException {
  . . . .
}

确保您以相同的顺序读取和写入字段,因为它们被写入缓冲区并且具有不同的命令会搞砸所有内容。

之后你只需要在Generic类型中为Vertex-Value-Type指定这个类。

虽然如果在设置过程中没有初始化VertexValue,当你读取输入文件时,......你应该在第一个SuperStep(== 0

中进行

我大约一年前写过一篇blog post about complex data types in Giraph,也许它会对你有所帮助,虽然有些事情可能已经发生了变化。