2015-05-18 3 views
-1

Я получаю следующую ошибку при запуске проограммы SimpleOutDegreeCountComput в Apache Giraph. Я использую JsonLongDoubleFloatDouble в качестве входного формата.Ошибка при использовании Apache Giraph

$ HADOOP_HOME/бен/Hadoop банка $ GIRAPH_HOME/giraph-примеры/мишень/giraph-примеры-1.2.0-СНАПШОТ-для-Hadoop-1.2.1-банка-с-dependencies.jar орг .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) at org.apache.giraph.utils.ConfigurationUtils.parseArgs (Configu rationUtils.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 (родной метод) в sun.reflect .NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:606) в орг. apache.hadoop.util.RunJar.main (RunJar.java:160) ^ [[Ahduser @ deepa-Inspiron-N5050:/us r/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 /пользователь/hduser/выход/Simpleout -w 1

ответ

0

как бревна говорит ваш вычисления, например, Для SimpleOutDegreeCountComput требуется формат LongWritable для идентификатора вершины, тогда как ваши данные в hdfs являются DoubleWritable. Итак, у вас есть два варианта: изменение SimpleOutDegreeCountComput для работы с DoubleWritable или конвертирование ваших данных из DoubleWritable в LongWritable.

0

Это по следующей причине. SimpleOutDegreeCountComputation имеет следующие signature-

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 в программе соответственно.

Смежные вопросы