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
In diesem Artikel wird die Implementierungsmethod...
CSS-Benennungsregeln Header: Header Inhalt: Inhalt...
Lassen Sie mich ein Problem zusammenfassen, mit d...
Beim insert into employee values(null,'張三'...
Native js realisiert den Karusselleffekt (nahtlos...
Lebenszyklusklassifizierung Jede Komponente von V...
Da es in dem Produkt meiner Firma eine Schaltfläc...
In letzter Zeit haben mich viele Studenten zur Ko...
Was ist Fuser Command? Der Befehl fuser ist ein s...
Code der Front-End-Testseite: <Vorlage> <...
Inhaltsverzeichnis Werkzeug: Anmeldeszenario: übe...
Als ich mir in letzter Zeit einige CSS3-Animation...
Dieser Artikel stellt den Implementierungscode fü...
Inhaltsverzeichnis Implementierung einer unregelm...
Der Code sieht folgendermaßen aus: <!DOCTYPE h...