Hadoop Frage



  • Einen wunderschönen Tag liebe Community.

    Ich soll ein Projekt mit Hadoop realisieren, bin aber noch etwas unsicher.
    Ich habe als Eingabe eine (oder mehrere) Textdateien.

    Der Beginn eines neuen Datensatz innerhalb einer solchen Datei ist durch einen Delimiter (">").
    Alles, was in der selben Zeile wie dieses Trennzeichen steht, ist als Kommentar zu betrachten

    EIn kleines Beispiel:

    > Toller Kommentar
    fihwifhsdf eihfwe rihiwe hfiwhfihfifhwif fwehf ishfifdsiü
    gsdhgusahü
    > Sinnloses Geschwafel
    fhsdifh iwerthf8whfwhfsdhfiwehfih wefihweifhweifhwe
    ifhdsiofhggfdihf

    fqeewfgew wfwefewfsdfsdfddf

    Diese Datei bestünde aus 3 Datensätzen.

    Meine Frage ist nun, wie ich meine Datei(en) erfolgreich in solche Datensätze aufteilen kann.

    Nun zu dem, was ich bisher erarbeitet habe, aber ich mir nicht sicher bin:

    Es gibt InputFormat und davon abgeleitet das Interface FileinputFormat.

    Hiervon abgeleitet gibt es dann TextInputFormat. Dieses arbeitet jedoch zeilenweise, was ich leider nicht gebrauchen kann.

    Ich würde daraus folgern, dass ich mein eigenes FileInputFormat schreiben muss.

    Dafür muss ich dann die Funktion

    InputSplit[] get Splits(JobConf job, int numSplits);
    Recordreader<K,V> getRecordReader(InputSplit split, JobConf job, Reporter reporter)
    

    AN dieser Stelle mangelt es mir leider an Material, ich finde kein einfaches Beispiel, was das vorführt.

    Meist finde ich nur so was:

    54     job.setInputFormatClass(TextInputFormat.class);
      55     job.setOutputFormatClass(TextOutputFormat.class);
      56         
      57     FileInputFormat.addInputPath(job, new Path(args[0]));
      58     FileOutputFormat.setOutputPath(job, new Path(args[1]));
    

    Was ich nun wissen möchte:
    Sind meine Überlegungen bisher korrekt?
    Muss ich ausser einem eigenen InputFormat noch etwas machen, damit Mapper und Reducer funktionieren?

    Herzlichen Dank im Voraus


Anmelden zum Antworten