Ich habe einen Cluster mit 15 Knoten, den ich für die Verarbeitung von Daten im Bereich von 90 Millionen Zeilen (Hive-Tabelle)/pro Tag verwenden möchte. Die Daten sind in einen des Knoten als hive Tisch und ich so etwas wie der folgenden Befehl verwenden,Wie man mehrere Knoten in einem Cluster verwendet, um riesige Datenmengen zu verarbeiten - Python
with hive.connect(host = 'hostname of that node', port= 10000, authMechanism='LDAP', user='username', password='pass') as conn:
with conn.cursor() as cur:
cur.execute('select * from tablename')
do_not_touch_this_data = pd.DataFrame(cur.fetch())
Das Problem hier ist die Abfrage für mehr als 8 Stunden ausgeführt wird, alle Daten in Python zu laden . Dies liegt daran, dass das Paket alle Daten aufnimmt und in den Speicher dieses bestimmten Knotens lädt. Auch nach dem Laden kann ich selbst grundlegende Befehle wie count/EDA nicht ausführen. Es dauert eine Menge Zeit für jeden Befehl. Dies liegt daran, dass 128 GB RAM dieses bestimmten Knotens im 15-Knoten-Cluster überlastet sind.
Ich möchte auch andere Knoten Speicher verwenden, um EDA mit den Daten zu lesen/zu verarbeiten/zu tun. Kann jemand vorschlagen, diese Knoten in Python zu verwenden, so dass die Befehle viel schneller ausgeführt würden und ich alle Knoten verwenden könnte? Ich bin ein Anfänger für verteiltes Rechnen und ich vermute, dass es einen Weg geben sollte, alle Knoten zu nutzen. Auch, ob das Lesen aller Daten in Python-Speicher eine gute Übung ist?
Danke für die Hilfe