Gelesen von Kafka und schreiben auf hdfs in Parkett
Ich bin neu in der BigData-eco-system und die Art der Vorbereitungen.
Habe ich gelesen mehrere Artikel, die über das Lesen einer kafka-Thema der Verwendung von spark-streaming, aber würde gerne wissen, ob es möglich ist, zu Lesen von kafka mit einem spark-job statt streaming ?
Wenn ja, könnte Ihr Jungs mir helfen und wies auf einige Artikel und code-snippets können Sie mich.
Mein zweiter Teil der Frage ist das schreiben auf hdfs in Parkett-format.
Ich Las einmal von Kafka , von dem ich annehme, haben Sie eine rdd.
Konvertieren Sie diese rdd in ein dataframe und dann schreiben Sie das dataframe wie eine Parkett-Datei.
Ist das der richtige Ansatz.
Jede Hilfe dankbar.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zum Lesen von Daten aus Kafka und das schreiben auf HDFS in Parkett-format, Verwendung von Spark-Batch-job-statt-streaming, die Sie verwenden können,Spark Strukturierte Streaming.
Strukturierte Streaming ist eine skalierbare und fehlertolerante stream-processing-engine gebaut, auf dem Spark-SQL-engine. Sie können express Ihre streaming-Berechnung auf die gleiche Weise Ausdrücken würde eine batch-Berechnung auf statischen Daten. Die Spark SQL-engine kümmert es läuft inkrementell und kontinuierlich und aktualisieren das endgültige Ergebnis als streaming-Daten weiter zu kommen. Können Sie das Dataset/DataFrame API in Scala, Java, Python oder R, um die express-streaming-Aggregationen, event-time windows, stream-to-batch-joins, etc. Die Berechnung erfolgt auf der gleichen optimiert Spark SQL-engine. Schließlich gewährleistet das system die Ende-zu-Ende-exactly-once-Fehler-Toleranz gewährleistet durch checkpointing-und Write-Ahead-Logs. In kurzen, Strukturierten Streaming bietet schnelle, skalierbare, fehlertolerante, Ende-zu-Ende-exactly-once-stream-Verarbeitung, ohne dass der Benutzer Grund über streaming.
Kommt es mit Kafka als einen integrierten Source, d.h., wir können die Umfrage-Daten von Kafka. Es ist kompatibel mit Kafka-broker-Versionen 0.10.0 oder höher.
Für das ziehen der Daten von Kafka im batch-Modus, können Sie ein Dataset erstellen/DataFrame für einen definierten Bereich von offsets.
Jede Zeile in der Quelle hat das folgende schema:
Nun, zum schreiben von Daten in HDFS in Parkett-format, folgenden code geschrieben werden kann:
Weitere Informationen zu Funke Strukturierte Streaming - + Kafka, entnehmen Sie bitte folgenden Leitfaden - Kafka Integration Guide
Ich hoffe, es hilft!
Du schon ein paar gute Antworten auf das Thema.
Wollte nur auf stress aus - seien Sie vorsichtig, um Strom direkt in einen Parkett-Tabelle.
Parkett-Leistung scheint beim Parkett Reihe Gruppengrößen sind groß genug (für die Einfachheit, man kann sagen, die Datei-Größe sollte in der Reihenfolge der 64-256 MB zum Beispiel), nutzen Wörterbuch-Komprimierung, bloom-Filter usw. (eine Parkett-Datei kann mehrere Zeile Brocken in es, und in der Regel mehrere Zeilen-Blöcken in jeder Datei; obwohl Zeile Stücke können nicht über mehrere Parkett-Dateien)
Wenn Sie streaming direkt auf das Parkett Tabelle, dann wirst du am Ende sehr wahrscheinlich mit einem Haufen winziger, Parkett-Dateien (je nach mini-batch-Größe von Spark Streaming und Datenvolumen). Abfragen von Dateien sehr langsam sein kann. Parkett kann verlangen, das Lesen aller Dateien " - Header zu versöhnen-schema für Beispiel-und es ist ein großer Aufwand. Wenn dies der Fall ist, werden Sie brauchen, um einen separaten Vorgang, der ausgeführt wird, zum Beispiel, als ein workaround, Lesen Sie ältere Dateien und schreibt Sie "verschmolzen" (wäre das nicht eine einfache Datei-Ebene Zusammenführen, ein Prozess würde tatsächlich benötigen, um Lesen in allen Parkett-Daten und verschütten größerer Dateien von Parkett-Dateien).
Diese Problemumgehung kann töten, den ursprünglichen Zweck der Daten "streaming". Sie könnte den Blick auf andere Technologien, die auch hier - wie beim Apache Kudu, Apache Kafka, Apache Druide, Kinesis usw. funktionieren hier besser.
Verwenden Kafka-Streams. SparkStreaming ist ein Etikettenschwindel (es ist mini-batch unter der Haube, zumindest bis zu 2,2).
https://eng.verizondigitalmedia.com/2017/04/28/Kafka-to-Hdfs-ParquetSerializer/