Giraph 如何仅输出图形的子集?

Giraph 如何仅输出图形的子集?,giraph,Giraph,我有一个图计算,它从某一类型的顶点子集开始,通过图将信息传播到一组目标顶点,这些顶点也是图的子集。我只想从那些特定的顶点输出信息,但在各种子类中我看不到这样做的方法,这些子类似乎都面向为图中的每个顶点输出一些东西。我该怎么做?例如,是否有输出阶段的挂钩,在那里我可以过滤输出?或者我应该编写一个实现,为没有数据的顶点不生成输出?提前感谢。您只需扩展该类并添加if条件,就可以了 例如,这里有一个只打印偶数顶点ID的类: public class ExampleTextVertexOutputForm

我有一个图计算,它从某一类型的顶点子集开始,通过图将信息传播到一组目标顶点,这些顶点也是图的子集。我只想从那些特定的顶点输出信息,但在各种子类中我看不到这样做的方法,这些子类似乎都面向为图中的每个顶点输出一些东西。我该怎么做?例如,是否有输出阶段的挂钩,在那里我可以过滤输出?或者我应该编写一个实现,为没有数据的顶点不生成输出?提前感谢。

您只需扩展该类并添加if条件,就可以了

例如,这里有一个只打印偶数顶点ID的类:

public class ExampleTextVertexOutputFormat extends
    TextVertexOutputFormat<LongWritable, LongWritable, NullWritable> {
  @Override
  public TextVertexWriter createVertexWriter(
          TaskAttemptContext context) throws IOException, InterruptedException {
    return new ExampleTextVertexLineWriter();
  }

  /**
   * Outputs for each line the vertex id and the searched vertices with their
   * hop count
   */
  private class ExampleTextVertexLineWriter extends TextVertexWriterToEachLine {
    @Override
    protected Text convertVertexToLine(
        Vertex<LongWritable, LongWritable, NullWritable> vertex) throws IOException {
      if (vertex.getId() % 2 == 0) {
        return new Text(vertex.getId());
      }
    }
  }
}
公共类ExampleTextVertexOutputFormat扩展
TextVertexOutputFormat{
@凌驾
公共文本VertexWriter createVertexWriter(
TaskAttemptContext(上下文)引发IOException、InterruptedException{
返回新的ExampleTextVertexLineWriter();
}
/**
*输出每条线的顶点id和搜索的顶点及其
*跳数
*/
私有类示例TextVertexLineWriter扩展TextVertexWriterToEachLine{
@凌驾
保护文本转换行(
顶点(顶点)引发IOException{
if(vertex.getId()%2==0){
返回新文本(vertex.getId());
}
}
}
}