按顶点维护数组结构

kkbh8khc  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(452)

在整个giraph图中,我需要在顶点的基础上维护一个数组,以存储在顶点级别执行的几个“健康”检查的结果。
如果它像写一个新的输入格式那样简单,那么它会继续下去吗?
我担心的是,提供给图形的实际数据不需要知道这个数组。

mutmk8jj

mutmk8jj1#

您不需要从任何地方读取数据,如果数组只是为了在不需要读取或写入的步骤之间保留临时计算。
您需要创建一个新类 implements Writable . 您将在这个类中存储数组,并负责超级步骤之间的序列化/反序列化。这是通过两个功能完成的:

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

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

确保以相同的顺序读取和写入字段,因为它们被写入缓冲区,并且顺序不同会把一切都搞砸。
之后,您只需要在顶点值类型的泛型类型中指定这个类。
虽然如果在设置过程中没有初始化vertexvalue,但是在读取输入文件时,…应该在第一个超级步骤中进行初始化( == 0 )
大约一年前,我在giraph中写了一篇关于复杂数据类型的博文,也许它会对你有更大的帮助,尽管在此期间有些事情可能已经改变了。

相关问题