Installieren Zuerst müssen Sie Java und Scala installieren, dann Spark herunterladen und installieren, sicherstellen, dass PATH und JAVA_HOME festgelegt sind, und dann müssen Sie Scalas SBT verwenden, um Spark wie folgt zu erstellen: $ sbt/sbt-Baugruppe Die Bauzeit ist relativ lang. Sobald der Build abgeschlossen ist, überprüfen Sie, ob die Installation erfolgreich war, indem Sie Folgendes ausführen: $ ./bin/spark-shell scala> val textFile = sc.textFile("README.md") // Erstelle eine Referenz auf README.md scala> textFile.count // Zähle die Anzahl der Zeilen in dieser Datei scala> textFile.first // Drucke die erste Zeile Apache-Zugriffsprotokoll-Analysator Zuerst müssen wir Scala verwenden, um einen Analysator für Apache-Zugriffsprotokolle zu schreiben. Glücklicherweise hat das schon jemand geschrieben. Laden Sie den Code des Apache-Protokolldatei-Parsers herunter. Verwenden Sie SBT zum Kompilieren und Verpacken von: sbt kompilieren SBT-Test sbt-Paket Der Paketname wird als AlsApacheLogParser.jar angenommen. // das funktioniert $ MASTER=local[4] SPARK_CLASSPATH=AlsApacheLogParser.jar ./bin/spark-shell Bei Spark 0.9 funktionieren einige Methoden nicht: // funktioniert nicht $ MASTER=local[4] ADD_JARS=AlsApacheLogParser.jar ./bin/spark-shell // funktioniert nicht spark> :cp AlsApacheLogParser.jar Erstellen Sie nach erfolgreichem Upload eine AccessLogParser-Instanz im Spark REPL: importiere com.alvinalexander.accesslogparser._ val p = neuer AccessLogParser Jetzt können Sie das Apache-Zugriffsprotokoll accesslog.small genauso lesen, wie Sie zuvor readme.cmd gelesen haben: scala> val log = sc.textFile("accesslog.small") 14/03/09 11:25:23 INFO MemoryStore: EnsureFreeSpace(32856) aufgerufen mit curMem=0, maxMem=309225062 14.03.09 11:25:23 INFO MemoryStore: Block broadcast_0 als Werte im Speicher abgelegt (geschätzte Größe 32,1 KB, frei 294,9 MB) log: org.apache.spark.rdd.RDD[String] = MappedRDD[1] bei Textdatei bei <Konsole>:15 scala> log.Anzahl (viel Ausgabe hier) res0: Lang = 100000 Analysieren von Apache-Protokollen Wir können analysieren, wie viele 404-Fehler es im Apache-Protokoll gibt. Die Erstellungsmethode ist wie folgt: def getStatusCode(Zeile: Option[AccessLogRecord]) = { Zeilenübereinstimmung { Fall Some(l) => l.httpStatusCode Fall Keine => "0" } } Option[AccessLogRecord] ist der Rückgabewert des Analysators. Verwenden Sie es dann in der Spark-Befehlszeile wie folgt: log.filter(Zeile => getStatusCode(p.parseRecord(Zeile)) == "404").Anzahl Diese Statistik gibt die Anzahl der Zeilen zurück, deren httpStatusCode 404 ist. Tiefer graben Wenn wir nun wissen möchten, welche URLs problematisch sind, z. B. ein Leerzeichen in der URL, das einen 404-Fehler verursacht, sind offensichtlich die folgenden Schritte erforderlich:
Erstellen Sie die folgende Methode: // Holen Sie sich das Feld „Anforderung“ aus einem Zugriffsprotokolldatensatz def getRequest(rawAccessLogString: String): Option[String] = { val accessLogRecordOption = p.parseRecord(rawAccessLogString) accessLogRecordOption-Übereinstimmung { Fall Einige(rec) => Einige(rec.request) Fall Keine => Keine } } Fügen Sie diesen Code in Spark REPL ein und führen Sie den folgenden Code aus: log.filter(Zeile => getStatusCode(p.parseRecord(Zeile)) == "404").map(getRequest(_)).count val recs = log.filter(Zeile => getStatusCode(p.parseRecord(Zeile)) == "404").map(getRequest(_)) val distinctRecs = log.filter(line => getStatusCode(p.parseRecord(line)) == "404").map(getRequest(_)).distinct distinctRecs.foreach(println) Zusammenfassen Für die einfache Analyse von Zugriffsprotokollen ist grep natürlich die bessere Wahl, für komplexere Abfragen ist jedoch Spark erforderlich. Es ist schwierig, die Leistung von Spark auf einem einzelnen System zu beurteilen. Dies liegt daran, dass Spark für verteilte Systeme mit großen Dateien entwickelt wurde. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So konfigurieren Sie SSL für den Koa2-Dienst
Überblick Es gibt viele Open-Source-Tools zur Net...
Die Testumgebung ist mit MariaDB 5.7 eingerichtet...
Verwenden Sie Nginx, um einen Tomcat9-Cluster zu ...
Basierend auf täglichen Entwicklungserfahrungen u...
Vorwort Die meisten unserer MySQL-Onlineumgebunge...
Inhaltsverzeichnis 1. Benutzerdefinierte Anweisun...
Dieser Artikel gibt Ihnen den spezifischen Code v...
Im neuesten HTML-Standard gibt es einen Calc-CSS-A...
Verwenden Sie vite, um ein vue3-Projekt zu erstel...
1 Anforderungen im Überblick Die Daten mehrerer T...
Lassen Sie mich Ihnen ohne weitere Umschweife den...
In diesem Artikel erfahren Sie, wie Sie ziehbare ...
Egal, ob Sie zu Hause auf dem Sofa oder draußen i...
Das Installationstutorial für mysql5.7.17 wird Ih...
Inhaltsverzeichnis 1. MySQL-Architektur 2. Netzwe...