sql >> Databasteknik >  >> NoSQL >> HBase

Hadoop InputFormat och typer av InputFormat i MapReduce

I vår tidigare Hadoop handledning Vi har gett dig en detaljerad beskrivning av Hadoop Mapper och Reducer. Nu i detta blogg, kommer vi att täcka den andra komponenten av MapReduce processen dvs Hadoop InputFormat.

Vi kommer att diskutera vad som InputFormat i Hadoop, vad funktioner tillhandahålls av MapReduce InputFormat. Vi kommer även att omfatta de typer av InputFormat i MapReduce, och hur man får data från mapper hjälp InputFormat.

Vad är Hadoop InputFormat?

Hadoop InputFormat beskriver input-specifikation för exekvering av Map-Minska jobb.

InputFormat beskriver hur man ska dela upp och läsa indatafiler. I utförande MapReduce jobb är InputFormat det första steget. Det är också ansvarig för att skapa ingångs splittringar och dela upp dem i poster.

Ingångs filer lagra data för MapReduce jobb. Ingångs filerna finns i HDFS . Även om dessa filer format är godtyckligt, kan vi också använda linjebaserade loggfiler och binärt format. Hence, I MapReduce, InputFormat klass är en av de grundläggande klasser som ger nedan funktionalitet:

  • InputFormat utväljer filerna eller andra föremål för inmatning.
  • Den definierar också data split. Den definierar både storleken på de enskilda kartuppgifter och dess potentiella utförande server.
  • Hadoop InputFormat definierar RecordReader. Det är också ansvarig för att läsa faktiska poster från indatafilerna.

Så vi får data från Mapper?

Metoder för att få data från mapparen är: getsplits () och createRecordReader () vilka är följande:

public abstract class InputFormat<K, V>
{
public abstract List<InputSplit> getSplits(JobContext context)
throws IOException, InterruptedException;
public abstract RecordReader<K, V>
createRecordReader(InputSplit split,
TaskAttemptContext context) throws IOException,
InterruptedException;
}

Typer av InputFormat i MapReduce

Det finns olika typer av MapReduce InputFormat i Hadoop som används för olika ändamål. Låt oss diskutera Hadoop InputFormat typerna nedan:

1. FileInputFormat

Det är basklassen för alla filbaserade InputFormats. FileInputFormat anger också ingångs katalog som har datafiler plats. När vi börjar en exekverings MapReduce jobb ger FileInputFormat en väg som innehåller filer för att läsa.

Detta InpuFormat läser alla filer. Sen delar dessa filer till en eller flera InputSplits.

2. TextInputFormat

Det är standard InputFormat. Denna InputFormat behandlar varje rad i varje ingång filen som ett separat register. Den utför ingen tolkning. TextInputFormat är användbart för oformaterade data eller linjebaserade register som loggfiler. Hence,

  • Key - Det är byteförskjutning i början av raden i filen (inte hela filen en split). Så det kommer att vara unik om de kombineras med filnamnet.
  • Värde - Det är innehållet i linjen. Det utesluter linje terminatorer.

3. KeyValueTextInputFormat

Det liknar TextInputFormat. Denna InputFormat behandlar också varje linje av den ingående som en separat post. Medan skillnaden är att hela TextInputFormat behandlar linje som värdet, men KeyValueTextInputFormat bryter själva ledningen in i nyckel och värde genom ett tabbtecken ( ’/ t’). Hence,

  • Key - Allt upp till tabbtecknet.
  • Värde - Det är den återstående delen av raden efter tabbtecken.

4. SequenceFileInputFormat

Det är en InputFormat som läser sekvensfiler. Sekvens filer är binära filer. Dessa filer lagrar också sekvenser av binära par nyckel-värde. Dessa är block komprimeras och ger direkt serialisering och deserialiseringsundantag av flera godtyckliga data. Hence,

Key &värde både är användardefinierade.

5. SequenceFileAsTextInputFormat

Det är variant av SequenceFileInputFormat. Detta format konverterar sekvens fil nyckelvärden till textobjekt. Så utför den omvandling genom att ringa ’ toString () ’På nycklar och värden. Hence, gör SequenceFileAsTextInputFormat sekvens filer lämpliga ingång för streaming.

6. SequenceFileAsBinaryInputFormat

Genom att använda SequenceFileInputFormat kan vi extrahera sekvens filens nycklar och värden som en opak binärt objekt.

7. NlineInputFormat

Det är en annan form av TextInputFormat där nycklarna är byteförskjutning av linjen. Och värden är innehållet i raden. Så mottager varje mapper ett variabelt antal linjer av ingång med TextInputFormat och KeyValueTextInputFormat.

Det antalet beror på storleken på split. Dessutom beror på längden av linjerna. Så om vill vår mapper att ta emot ett fast antal rader av input, då använder vi NLineInputFormat.

N- Det är antalet rader av indata att varje mapparen mottar.

Som standard (N =1), erhåller varje mapper exakt en linje av ingång.

Antag N =2, då varje split innehåller två rader. Så får en mapper de två första nyckel-värdepar. Annan mapper mottar de andra två nyckel-värdepar.

8. DBInputFormat

Denna InputFormat läser data från en relationsdatabas med hjälp av JDBC. Den laddar också små datamängder, kanske för att gå med stora datamängder från HDFS hjälp MultipleInputs. Hence,

  • Key - LongWritables
  • Värde - DBWritables.

Slutsats

Därför InputFormat definierar hur man läser data från en fil i Mapper instanser. I denna handledning, har vi lärt oss många typer av InputFormat som FileInputFormat, TextInputFormat etc.

Standardinmatningsformat är TextInputFormat. Om du har några frågor angående MapReduce InputFormat, så känn dig fri att dela med oss. Hoppas vi kommer att lösa dem.


  1. Hur man infogar flera dokument samtidigt i MongoDB via Java

  2. bästa praxis för django + PyMongo pooling?

  3. Skapa ett flerspråkigt textindex i MongoDB

  4. WiredTiger och uppdateringar på plats