【问题标题】:Error using Apache Giraph使用 Apache Giraph 时出错
【发布时间】:2015-05-18 09:24:09
【问题描述】:

我在 Apache Giraph 中运行 SimpleOutDegreeCountComputation 程序时收到以下错误。我使用 JsonLongDoubleFloatDouble 作为输入格式。

$HADOOP_HOME/bin/hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.2.0-SNAPSHOT-for-hadoop-1.2.1-jar-with-dependencies.jar org.apache.giraph.GiraphRunner org.apache.giraph.examples.SimpleOutDegreeCountComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hduser/input/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hduser/output/Simpleout -w 1 警告:$HADOOP_HOME 是 已弃用。

15/05/18 12:56:04 INFO utils.ConfigurationUtils:无边缘输入格式 指定的。确保您的 InputFormat 不需要一个。 15/05/18 12:56:04 INFO utils.ConfigurationUtils:无边缘输出格式 指定的。确保您的 OutputFormat 不需要。例外情况 线程“主”java.lang.IllegalStateException:checkClassTypes:顶点 值类型不可赋值,计算 - 类 org.apache.hadoop.io.LongWritable,VertexInputFormat - 类 org.apache.hadoop.io.DoubleWritable 在 org.apache.giraph.job.GiraphConfigurationValidator.checkAssignable(GiraphConfigurationValidator.java:381) 在 org.apache.giraph.job.GiraphConfigurationValidator.verifyVertexInputFormatGenericTypes(GiraphConfigurationValidator.java:228) 在 org.apache.giraph.job.GiraphConfigurationValidator.validateConfiguration(GiraphConfigurationValidator.java:141) 在 org.apache.giraph.utils.ConfigurationUtils.parseArgs(ConfigurationUtils.java:222) 在 org.apache.giraph.GiraphRunner.run(GiraphRunner.java:74) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 在 org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:160) ^[[Ahduser@deepa-Inspiron-N5050:/usr/local/hadoop/bin$ $HADOOP_HOME/bin/hadoop jGIRAPH_HOME/giraph-examples/target/giraph-examples-1.2.0-SNAPSHOT-for-hadoop-1.2.1-jar-with-dependencies.jar org.apache.giraph.GiraphRunner org.apache.giraph.examples.SimpleOutDegreeCountComputation -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /user/hduser/input/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /user/hduser/output/Simpleout -w 1

【问题讨论】:

    标签: hadoop giraph


    【解决方案1】:

    正如日志所说,您的计算,例如SimpleOutDegreeCountComputation 需要 LongWritable 格式的顶点 ID,而 hdfs 中的数据是 DoubleWritable。因此,有两个选择:将 SimpleOutDegreeCountComputation 更改为使用 DoubleWritable 或将数据从 DoubleWritable 转换为 LongWritable。

    【讨论】:

      【解决方案2】:

      这是因为以下原因。 SimpleOutDegreeCountComputation 具有以下签名-

      public class SimpleOutDegreeCountComputation extends 
      BasicComputation<LongWritable, LongWritable, DoubleWritable, DoubleWritable{
      //Logic for out degree
      }
      

      这里,BasicComputation 要求

      >1. Long Vertex ID 
      >2. Long Vertex Value
      >3. Double Edge weight
      >4. Double message type
      

      您正在尝试使用 JsonLongDoubleFloatDouble 格式进行输入。哪个给你

      >1. Long Vertex ID
      >2. Double Vertex Value
      >3. Float Edge Weight
      >4. Double message type
      

      相应地更改程序中的 BasicComputation 签名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多