Das Szenario ist Ich muss eine Datei (Input) verarbeiten und für jeden Datensatz muss ich überprüfen, ob bestimmte Felder in der Eingabedatei mit den Feldern in einem Hadoop-Cluster übereinstimmen.Verbinden von HIVE in MRJob
Wir denken daran, mit MRJob die Eingabedatei zu verarbeiten und mit HIVE Daten aus dem Hadoop-Cluster zu holen. Ich würde gerne wissen, ob es mir möglich ist, HIVE in einem MRJob-Modul zu verbinden. Wenn ja, wie?
Wenn nicht, was wäre der ideale Ansatz, um meine Anforderung zu erfüllen.
Ich bin neu in Hadoop, MRJob und Hive.
Bitte geben Sie einen Vorschlag.
Ja. Für das Beispiel Meine ist Eingabedatei so etwas wie dieses Eingabedatei: Namen, add1, add2, Postleitzahl, Mark, 31 Maybush, XXX, WF1 5xy Ich muss prüfen, ob der Wert des Feldes 'add1' Das ist "31 Maybush" für Name "Mark" in der Eingabedatei stimmt mit den Daten im Cluster für den gleichen Namen überein. – user1703319
Haben alle Dateien das exakt gleiche Schema? Wenn ja, können Sie eine Hive-Tabelle erstellen und alle Hunderte/Tausende von Dateien, die Sie haben, in die neue Hive-Tabelle laden. Dann können Sie eine Verbindung herstellen, um eine Hive-Abfrage von MapReduce auszuführen. Ihre Hive-Abfrage wird etwa so aussehen: SELECT * FROM big_hive_table WHERE add1 = '31 Maybush 'AND name =' Mark '; Natürlich müssen Sie 31 Maybush und Mark dynamisch ändern, während jede Eingabedatei gelesen wird. – AkashNegi
Das Problem mit dem obigen Ansatz ist, dass es für jede Abfrage in Hive einen MR-Job gibt, so dass ein MR-Job für jede Zeile in der Eingabedatei ausgeführt wird, da wir jede Zeile vergleichen. Wenn Sie 2000 Zeilen haben, dann 2000 MR-Jobs für Vergleiche. – AkashNegi