纵观Giraph图,我需要在Vertex基础上维护一个数组来存储几个" health"在顶点级别完成检查。
如果它像编写一个新的输入格式一样简单吗?
我担心的是,为图表提供的实际数据不需要知道这个数组。
答案 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,也许它会对你有所帮助,虽然有些事情可能已经发生了变化。