Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[java/hadoop] Custom InputFormat, ClassCastException

Pagina: 1
Acties:

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik probeer via de Hadoop Pipes API een map/reduce taak te draaien met een custom InputFormat en RecordReader. Aangezien dit helaas niet puur in C++ te doen is, heb ik twee classes hiervoor in java gemaakt.

code:
1
2
3
4
5
6
7
8
9
10
/**
 *  LogInputFormat class
 *
 *  Will split up larger log files into blocks
 *  of a maximum of 64 MB.
 */
public class LogInputFormat extends FileInputFormat<LongWritable, Text>
{
    // snip createRecordReader en getSplits methodes
};


De twee classes gecompileerd en ingepakt in een jar. Als ik deze probeer te gebruiken in een map/reduce taak krijg ik een ClassCastException:

code:
1
2
3
4
5
Exception in thread "main" java.lang.ClassCastException: class org.x.hadoop.mapreduce.LogInputFormat
        at java.lang.Class.asSubclass(Class.java:3165)
        at org.apache.hadoop.mapred.pipes.Submitter.getClass(Submitter.java:388)
        at org.apache.hadoop.mapred.pipes.Submitter.run(Submitter.java:437)
        at org.apache.hadoop.mapred.pipes.Submitter.main(Submitter.java:518)


Wat ik uit de code van Hadoop opmaak is dat deze de LogInputFormat class probeert te casten naar een InputFormat class. Dit zou naar mijn beste weten gewoon moeten kunnen, ik extend de FileInputFormat class, die weer extend van de InputFormat class.

Het enige wat ik nog raar vind dat de cast die Hadoop doet (in Submitter.java op regel 437) naar een InputFormat is, wat zelf een templated class is, en er niet naar iets als InputFormat<X, Y> wordt gecast. Dit werkt echter wel met de built-in InputFormat classes, dus ik heb geen idee wat er nu precies aan de hand is.

Ik ontken het bestaan van IE.


  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Schaamteloze bump!

Ik ontken het bestaan van IE.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20-11 22:59

Janoz

Moderator Devschuur®

!litemod

Probeer de boel eens in een debugger te draaien om te zien welke classes hij nu daadwerkelijk op dat punt probeert te krijgen en of het wel is wat je verwacht dat je zou krijgen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'