HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Hadoop-Eingabeformat und Eingabeformattypen in MapReduce

In unserem vorherigen Hadoop-Tutorial haben wir Ihnen eine ausführliche Beschreibung von Hadoop Mapper bereitgestellt und Reduzierer. In diesem Blog werden wir nun die andere Komponente des MapReduce-Prozesses behandeln, d. h. Hadoop InputFormat.

Wir werden diskutieren, was InputFormat in Hadoop ist, welche Funktionen von MapReduce InputFormat bereitgestellt werden. Wir werden auch die Arten von InputFormat in MapReduce behandeln und wie man die Daten von Mapper mit InputFormat bekommt.

Was ist Hadoop InputFormat?

Hadoop-Eingabeformat  beschreibt die Eingabespezifikation für die Ausführung des Map-Reduce-Jobs.

InputFormat beschreibt, wie Eingabedateien aufgeteilt und gelesen werden. Bei der Auftragsausführung von MapReduce ist InputFormat der erste Schritt. Es ist auch dafür verantwortlich, die Eingabeaufteilungen zu erstellen und sie in Datensätze aufzuteilen.

Eingabedateien speichern die Daten für den MapReduce-Job. Eingabedateien befinden sich in HDFS . Obwohl dieses Dateiformat beliebig ist, können wir auch zeilenbasierte Protokolldateien und das Binärformat verwenden. Daher ist die InputFormat-Klasse in MapReduce eine der grundlegenden Klassen, die die folgende Funktionalität bietet:

  • InputFormat wählt die Dateien oder andere Objekte für die Eingabe aus.
  • Es definiert auch die Datensplits. Es definiert sowohl die Größe einzelner Kartenaufgaben als auch den potenziellen Ausführungsserver.
  • Hadoop InputFormat definiert den RecordReader. Es ist auch für das Lesen der tatsächlichen Datensätze aus den Eingabedateien verantwortlich.

Wie erhalten wir die Daten von Mapper?

Methoden zum Abrufen der Daten vom Mapper sind:getsplits() und createRecordReader() die wie folgt lauten:

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;
}

Arten von InputFormat in MapReduce

Es gibt verschiedene Arten von MapReduce InputFormat in Hadoop, die für unterschiedliche Zwecke verwendet werden. Lassen Sie uns die folgenden Hadoop InputFormat-Typen besprechen:

1. FileInputFormat

Es ist die Basisklasse für alle dateibasierten InputFormats. FileInputFormat gibt auch das Eingabeverzeichnis an, das den Speicherort der Datendateien enthält. Wenn wir die Ausführung eines MapReduce-Jobs starten, stellt FileInputFormat einen Pfad bereit, der die zu lesenden Dateien enthält.

Dieses InpuFormat liest alle Dateien. Dann teilt es diese Dateien in einen oder mehrere InputSplits.

2. TextInputFormat

Es ist das Standard-Eingabeformat. Dieses InputFormat behandelt jede Zeile jeder Eingabedatei als separaten Datensatz. Es führt keine Analyse durch. TextInputFormat ist nützlich für unformatierte Daten oder zeilenbasierte Aufzeichnungen wie Protokolldateien. Daher

  • Schlüssel – Es ist der Byte-Offset des Anfangs der Zeile innerhalb der Datei (nicht die ganze Datei in einem Split). Es ist also eindeutig, wenn es mit dem Dateinamen kombiniert wird.
  • Wert – Es ist der Inhalt der Zeile. Es schließt Zeilenabschlusszeichen aus.

3. KeyValueTextInputFormat

Es ähnelt TextInputFormat. Dieses InputFormat behandelt auch jede Eingabezeile als separaten Datensatz. Der Unterschied besteht zwar darin, dass TextInputFormat die gesamte Zeile als Wert behandelt, aber das KeyValueTextInputFormat bricht die Zeile selbst durch ein Tabulatorzeichen ('/t') in Schlüssel und Wert auf. Daher

  • Schlüssel – Alles bis auf das Tabulatorzeichen.
  • Wert – Es ist der verbleibende Teil der Zeile nach dem Tabulatorzeichen.

4. SequenceFileInputFormat

Es ist ein InputFormat, das Sequenzdateien liest. Sequenzdateien sind Binärdateien. Diese Dateien speichern auch Sequenzen von binären Schlüssel-Wert-Paaren. Diese sind blockkomprimiert und bieten eine direkte Serialisierung und Deserialisierung mehrerer beliebiger Daten. Daher

Schlüssel und Wert sind beide benutzerdefiniert.

5. SequenceFileAsTextInputFormat

Es ist die Variante von SequenceFileInputFormat. Dieses Format konvertiert die Schlüsselwerte der Sequenzdatei in Textobjekte. Es führt also eine Konvertierung durch, indem es 'tostring() aufruft ’ auf den Schlüsseln und Werten. Daher macht SequenceFileAsTextInputFormat Sequenzdateien zu einer geeigneten Eingabe für das Streaming.

6. SequenceFileAsBinaryInputFormat

Durch die Verwendung von SequenceFileInputFormat können wir die Schlüssel und Werte der Sequenzdatei als undurchsichtiges Binärobjekt extrahieren.

7. NlineInputFormat

Es ist eine andere Form von TextInputFormat, bei der die Schlüssel ein Byte-Offset der Zeile sind. Und Werte sind Inhalte der Zeile. Jeder Mapper erhält also eine variable Anzahl von Eingabezeilen mit TextInputFormat und KeyValueTextInputFormat.

Die Anzahl hängt von der Größe der Teilung ab. Hängt auch von der Länge der Leitungen ab. Wenn also unser Mapper eine feste Anzahl von Eingabezeilen erhalten soll, verwenden wir NLineInputFormat.

N- Es ist die Anzahl der Eingabezeilen, die jeder Mapper erhält.

Standardmäßig (N=1) erhält jeder Mapper genau eine Eingabezeile.

Angenommen N =2, dann enthält jede Teilung zwei Zeilen. Ein Mapper erhält also die ersten beiden Schlüssel-Wert-Paare. Ein anderer Mapper erhält die zweiten beiden Schlüssel-Wert-Paare.

8. DBInputFormat

Dieses InputFormat liest Daten aus einer relationalen Datenbank unter Verwendung von JDBC. Es lädt auch kleine Datasets, vielleicht zum Zusammenführen mit großen Datasets aus HDFS unter Verwendung von MultipleInputs. Daher

  • Schlüssel – LongWritables
  • Wert – DBWritables.

Schlussfolgerung

Daher definiert InputFormat, wie Daten aus einer Datei in die Mapper-Instanzen gelesen werden. In diesem Tutorial haben wir viele Arten von InputFormat wie FileInputFormat, TextInputFormat usw. gelernt.

Das Standardeingabeformat ist TextInputFormat. Wenn Sie Fragen zu MapReduce InputFormat haben, teilen Sie uns diese bitte mit. Ich hoffe, wir werden sie lösen.