每个顶点维护一个数组结构

Maintain an array structure per Vertex

在整个 Giraph 图中,我需要在顶点基础上维护一个数组,以存储在顶点级别完成的几个 "health" 检查的结果。

如果像写一个新的输入格式那么简单,那会被继承吗?

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

你不需要从任何地方读取数据,如果数组只是为了在步骤之间保持临时计算,你不需要读取,也不需要写入它。

您需要创建一个新的 class,其中 implements Writable。您会将数组存储在此 class 中,并处理超级步骤之间的 serialisation/deserialization。这是在两个函数中完成的:

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

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

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

之后,您只需要在 Vertex-Value-Type 的通用类型中指定这个 class。

尽管如果您在设置过程中不初始化 VertexValue,当您读取输入文件时,...您应该在第一个 SuperStep (== 0)

我大约一年前写了一篇 blog post about complex data types in Giraph,也许它会对你有进一步的帮助,尽管在此期间有些事情可能已经发生了变化。