Anwendung von Hadoop-Zählern und Datenbereinigung

Anwendung von Hadoop-Zählern und Datenbereinigung

Datenbereinigung (ETL)

Vor dem Ausführen des MapReduce-Kernprogramms des Unternehmens müssen häufig zunächst die Daten bereinigt werden, um Daten zu entfernen, die nicht den Benutzeranforderungen entsprechen. Für den Bereinigungsvorgang ist häufig nur die Ausführung des Mapper-Programms und nicht des Reduce-Programms erforderlich.

1. brauchen

Entfernen Sie die Protokolle, deren Feldlänge kleiner oder gleich 11 ist.

(1) Eingabedaten

web.log

(2) Erwartete Produktionsdaten

Die Länge jedes Zeilenfeldes ist größer als 11

2. Bedarfsanalyse

Die Eingabedaten müssen gemäß den Regeln in der Map-Phase gefiltert und bereinigt werden.

3. Implementierungscode

(1) Schreiben Sie die LogMapper-Klasse

Paket com.atguigu.mapreduce.weblog;
importiere java.io.IOException;
importiere org.apache.hadoop.io.LongWritable;
importiere org.apache.hadoop.io.NullWritable;
importiere org.apache.hadoop.io.Text;
importiere org.apache.hadoop.mapreduce.Mapper;
öffentliche Klasse LogMapper erweitert Mapper<LongWritable, Text, Text, NullWritable>{
  Text k = neuer Text();
  @Überschreiben
  geschützte void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   // 1 1 Datenzeile abrufen String line = value.toString();
   // 2 Protokoll analysieren boolesches Ergebnis = parseLog(Zeile,Kontext);
   // 3 Das Log ist unzulässig und wird beendet, wenn (!result) {
     zurückkehren;
   }
   // 4 Taste setzen
   k.set(Zeile);
   // 5 Daten schreiben context.write(k, NullWritable.get());
  }
  // 2 Protokoll analysieren private boolean parseLog(String line, Context context) {
   // 1 Achsenabschnitt String[] Felder = line.split(" ");
   // 2 Protokolle mit einer Länge von mehr als 11 sind zulässig, wenn (Felder.Länge > 11) {
     // Systemzähler context.getCounter("map", "true").increment(1);
     gibt true zurück;
   }anders {
     Kontext.getCounter("map", "false").Inkrement(1);
     gibt false zurück;
   }
  }
}

(2) Schreiben Sie die LogDriver-Klasse

Paket com.atguigu.mapreduce.weblog;
importiere org.apache.hadoop.conf.Configuration;
importiere org.apache.hadoop.fs.Path;
importiere org.apache.hadoop.io.NullWritable;
importiere org.apache.hadoop.io.Text;
importiere org.apache.hadoop.mapreduce.Job;
importiere org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importiere org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
öffentliche Klasse LogDriver {
  öffentliche statische void main(String[] args) wirft Exception {
// Die Eingabe- und Ausgabepfade müssen entsprechend den tatsächlichen Eingabe- und Ausgabepfaden auf Ihrem Computer eingestellt werden. args = new String[] { "e:/input/inputlog", "e:/output1" };
   // 1 Jobinformationen abrufen Configuration conf = new Configuration();
   Job job = Job.getInstance(conf);
   // 2 Laden Sie das JAR-Paket job.setJarByClass(LogDriver.class);
   // 3 zugehörige Karten
   job.setMapperClass(LogMapper.class);
   // 4 Legen Sie den endgültigen Ausgabetyp fest job.setOutputKeyClass(Text.class);
   : job.setOutputValueClass(NullWritable.class);
   // Setze die Anzahl der Reducetasks auf 0
   : Job.setNumReduceTasks(0);
   // 5 Eingabe- und Ausgabepfade festlegen FileInputFormat.setInputPaths(job, new Path(args[0]));
   FileOutputFormat.setOutputPath(job, neuer Pfad(args[1]));
   // 6 Job übermitteln.waitForCompletion(true);
  }
}

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Hadoop NameNode-Föderation
  • Erläuterung der neuen Funktion von Hadoop 2.X, der Papierkorbfunktion
  • Ein praktisches Tutorial zum Erstellen einer vollständig verteilten Hadoop-Umgebung unter Ubuntu 16.4
  • Hadoop 2.x vs. 3.x 22-Punkte-Vergleich, Hadoop 3.x Verbesserungen gegenüber 2.x
  • So erstellen Sie eine Hadoop-Clusterumgebung mit Ubuntu Docker
  • Detaillierte Schritte zum Erstellen von Hadoop in CentOS
  • Beispielcode für die Wortzählung in Hadoop
  • Java/Web ruft Hadoop für MapReduce-Beispielcode auf
  • Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop

<<:  Beispiel für die Verwendung von JSX zur Entwicklung einer Markup-Komponente (Front-End-Komponentenbildung)

>>:  Detaillierte Erklärung zur Formatierung von Zahlen in MySQL

Artikel empfehlen

Detaillierte Erklärung der Funktionsweise von Nginx

So funktioniert Nginx Nginx besteht aus einem Ker...

So installieren und konfigurieren Sie den SSH-Dienst in Ubuntu 18.04

Installieren Sie das SSH-Tool 1. Öffnen Sie das T...

Native JS-Implementierung der Lupenkomponente

In diesem Artikelbeispiel wird der spezifische Co...

Installations-Tutorial für die ZIP-Archivversion von MySQL 5.7

In diesem Artikel finden Sie das Installations-Tu...

Karusselleffekte mit JavaScript implementieren

In diesem Artikel wird der spezifische Code für J...

Problem mit der Iframe-QRC-Zuweisung (serverseitig)

Ich bin heute auf dieses Problem gestoßen. Ich hab...

Detaillierte Beschreibung des HTML-Meta-Viewport-Attributs

Was ist ein Ansichtsfenster? Mobile Browser platzi...

Welche Funktion ist !-- -- im HTML-Seitenstil?

Hauptsächlich für Browser mit niedriger Version &l...

Zusammenfassung einiger verwandter Vorgänge geplanter Linux-Aufgaben

Ich habe verschiedene große Websites durchsucht u...

Implementierung der Docker-Bereitstellung von ElasticSearch und ElasticSearch-Head

In diesem Artikel wird hauptsächlich erläutert, w...

Detaillierte Erklärung der Speicher-Engine in MySQL

Übersicht über die MySQL-Speicher-Engine Was ist ...

Implementierung der MySQL-Konfiguration SSL-Zertifikat-Login

Inhaltsverzeichnis Vorwort 1. MySQL ermöglicht SS...