我正在尝试将包含相关顶点信息的一些文本文件读入Giraph:每一行都是
vertex_id attribute_1 attribute_2 ..... attribute_n
其中每个属性都是一个字符串。
目标是创建一个顶点,其中所有这些属性都是顶点值的一部分。
查找各种输入格式我找不到任何开箱即用的东西,所以我假设我必须从 VertexValueInputFormat 派生我的顶点输入类(我有一个单独的边缘阅读器)。
问题是:怎么样?我创建了一个包含String []数组的Value类,但是如何将其交给Giraph / Hadoop?这是一行读者:受保护的抽象V getValue(org.apache.hadoop.io.Text行)
我的想法是,V将是 ArrayWritable ,但似乎不喜欢它。
有任何线索吗?感谢
答案 0 :(得分:2)
如果你的顶点有一个自定义值(在你的case字符串数组中),那么你需要有一个自定义顶点值类和一个自定义顶点输入格式。
作为示例,请看一个非常简单的自定义顶点类。此类的值为double
,int
和long
:https://gist.github.com/sar-vivek/df09cca17cc3f6b5ac60
注意 - 您必须相应地覆盖readFields()
和write()
。
然后你需要有一个自定义顶点输入格式。对于上面的顶点类,我已经修改了内置的json顶点读取器。下面是示例 - https://gist.github.com/sar-vivek/f39edacec6d9a43c3717 [注意如何在第68行设置顶点的值]。