在整个giraph图中,我需要在顶点的基础上维护一个数组,以存储在顶点级别执行的几个“健康”检查的结果。如果它像写一个新的输入格式那样简单,那么它会继续下去吗?我担心的是,提供给图形的实际数据不需要知道这个数组。
mutmk8jj1#
您不需要从任何地方读取数据,如果数组只是为了在不需要读取或写入的步骤之间保留临时计算。您需要创建一个新类 implements Writable . 您将在这个类中存储数组,并负责超级步骤之间的序列化/反序列化。这是通过两个功能完成的:
implements Writable
@Override public void write(DateOutput dataOutput) throws IOException { . . . . } @Override public void readFields(DataInput dataInput) throws IOException { . . . . }
确保以相同的顺序读取和写入字段,因为它们被写入缓冲区,并且顺序不同会把一切都搞砸。之后,您只需要在顶点值类型的泛型类型中指定这个类。虽然如果在设置过程中没有初始化vertexvalue,但是在读取输入文件时,…应该在第一个超级步骤中进行初始化( == 0 )大约一年前,我在giraph中写了一篇关于复杂数据类型的博文,也许它会对你有更大的帮助,尽管在此期间有些事情可能已经改变了。
== 0
1条答案
按热度按时间mutmk8jj1#
您不需要从任何地方读取数据,如果数组只是为了在不需要读取或写入的步骤之间保留临时计算。
您需要创建一个新类
implements Writable
. 您将在这个类中存储数组,并负责超级步骤之间的序列化/反序列化。这是通过两个功能完成的:确保以相同的顺序读取和写入字段,因为它们被写入缓冲区,并且顺序不同会把一切都搞砸。
之后,您只需要在顶点值类型的泛型类型中指定这个类。
虽然如果在设置过程中没有初始化vertexvalue,但是在读取输入文件时,…应该在第一个超级步骤中进行初始化(
== 0
)大约一年前,我在giraph中写了一篇关于复杂数据类型的博文,也许它会对你有更大的帮助,尽管在此期间有些事情可能已经改变了。