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:
|
>>: Detaillierte Erklärung zur Formatierung von Zahlen in MySQL
So funktioniert Nginx Nginx besteht aus einem Ker...
Installieren Sie das SSH-Tool 1. Öffnen Sie das T...
Ich glaube, dass vielen Leuten, die MySQL schon l...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort In vielen Verwaltungs- und Bürosystemen s...
In diesem Artikel finden Sie das Installations-Tu...
Es gibt ein auf dem Mac entwickeltes Projekt, das...
In diesem Artikel wird der spezifische Code für J...
Ich bin heute auf dieses Problem gestoßen. Ich hab...
Was ist ein Ansichtsfenster? Mobile Browser platzi...
Hauptsächlich für Browser mit niedriger Version &l...
Ich habe verschiedene große Websites durchsucht u...
In diesem Artikel wird hauptsächlich erläutert, w...
Übersicht über die MySQL-Speicher-Engine Was ist ...
Inhaltsverzeichnis Vorwort 1. MySQL ermöglicht SS...