使用Apache Giraph

时间:2015-05-18 09:24:09

标签: hadoop giraph

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

  

$ HADOOP_HOME / bin / hadoop jar   $ GIRAPH_HOME / giraph-例子/目标/ giraph-例子-1.2.0-SNAPSHOT换的Hadoop-1.2.1-JAR与 - 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不需要一个。例外   thread“main”java.lang.IllegalStateException:checkClassTypes:vertex   值类型不可分配,计算 - 类   org.apache.hadoop.io.LongWritable,VertexInputFormat - 类   org.apache.hadoop.io.DoubleWritable at   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)at   org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)at   org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)at   org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:606)at   org.apache.hadoop.util.RunJar.main(RunJar.java:160)   ^ [Ahduser @迪帕 - 灵-N5050:在/ usr /本地/ Hadoop的/ bin中$   $ HADOOP_HOME /斌/ Hadoop的   jGIRAPH_HOME / giraph-实例/目标/ giraph-例子-1.2.0-SNAPSHOT换的hadoop-1.2.1-罐与 - 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

2 个答案:

答案 0 :(得分:1)

因为日志说你的计算,例如SimpledutDegreeCountComputation需要longWritable格式的vertex`sid,而hdfs中的数据是DoubleWritable。因此,有两个选择:更改SimpleOutDegreeCountComputation以使用DoubleWritable或将数据从DoubleWritable转换为LongWritable。

答案 1 :(得分:1)

这是因为以下原因。 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签名。