Ich habe begonnen, Hadoop Stack für eines meiner Projekte zu lernen (Neuling im Hadoop-Stack). Ich versuche herauszufinden, welcher Ansatz für ETL-Prozesse am besten geeignet ist, um Daten in HIVE zu übertragen. Ich habe eine funktionierende Lösung, aber ich denke, es ist nicht optimal und es gibt bessere Möglichkeiten.Hadoop Daten importieren - richtiger ETL-Ansatz
Mein Fall: Ich habe eine Rohdaten in Binärdateien vom System generiert. Bevor ich sie auf HDFS/HIVE setze, muss ich sie mit dem Unix-Konsolenprogramm (ziemlich komplex) für Textzeilen mit Daten analysieren und dann in die HIVE-Tabelle legen.
Meine aktuelle Lösung:
-System eine Nachricht an Kafka hinzufügen, dass es eine neue Binär-Datei für die Verarbeitung wartet.
Ich habe ein Python-Skript auf hadoop Master-Knoten (zumindest vorerst):
A) recieveing Kafka Nachrichten
B) das Herunterladen der Datei.
C) Ausführung des Konsolenprogramm
D) Speicher von Textausgabe CSV
E) Pushing CSV
F) Erstellen von temporärer Tabelle in HIVE aus CSV-Datei
auf HDFS-Datei G) EINFÜGEN von Daten aus der temporären TABLE in eine separate Tabelle auf der ORC-Engine
H) Temporäre Tabelle löschen
Meine Fragen:
Ist diese Strömung optimal? Vielleicht gibt es etwas, das einfacher sein könnte?
Es ist möglich, dieses Python-Skript (oder eine andere bessere Technologie?) Automatisch auf jedem Hadoop-Knoten zu planen/bereitzustellen/auszuführen?
Gibt es Hinweise auf Werkzeuge/Optionen, um den gesamten Prozess einfach zu warten, zu planen und effizient zu machen?
Thx für Hinweise. Tabelle wird nun erstellt von: 'AUSSEN CREATE TABLE IF NOT Vorlage VORHANDEN ( ---- CVS Schema ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '' GESPEICHERT als Textdatei location' Wo Standortpfad zu HDFS ist CSV-Datei. Danach verwende ich: 'INSERT INTO TABELLE target_table SELECT * FROM Vorlage; DROP TABLE IF EXISTS Vorlage; ' – mcwolf