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
Inhaltsverzeichnis 1. Übersicht über die logische...
Wenn der Entwickler Dockerfile zum Erstellen des ...
Zweitens hängt das Ranking von Schlüsselwörtern au...
Nach der Installation des neuesten Windows 10-Upd...
Hintergrund: Position: Sticky wird auch Sticky-Po...
Weiterleitung zwischen zwei verschiedenen Servern...
Der Linux-Stream-Editor ist eine nützliche Möglic...
Ich werde keine weitere Zeit mit Unsinnsgerede ve...
Inhaltsverzeichnis Erster Schritt der Installatio...
Hintergrund Heute habe ich CodePen durchsucht und...
1.Dies deutet auf 1. Wer ruft wen an? Beispiel: F...
HTML-Formulare werden verwendet, um verschiedene ...
Inhaltsverzeichnis 1. Nachfragehintergrund 2. Opt...
<br /> Der Entwurf einer persönlichen Schrei...
Verwenden Sie ifnull statt isnull isnull wird ver...