Ich habe 3 sehr große Tabellen * von IP-Adressen und versuche, die Anzahl der gemeinsamen IPs zwischen den 3 Tabellen zu zählen. Ich habe überlegt, Joins und auch eine Unterabfrage zu verwenden, um den Schnittpunkt von IPs zwischen diesen 3 Tabellen zu finden. Wie kann ich die Schnittmenge aller 3 Tabellen mit einer Abfrage finden?Wie kann ich 3 große Tabellen für überschneidende Werte mit Hilfe von Hive abfragen?
Dies ist falsche Syntax, sondern zeigt, was ich versuche zu erreichen:
SELECT COUNT(DISTINCT(a.ip)) FROM a, b, c WHERE a.ip = b.ip = c.ip
ich andere Antworten zu haben gesehen, wie drei Tabellen zu verknüpfen, aber nichts für Hive und nichts für diese Skala.
* Anmerkungen:
- Tabelle a: 7 Milliarden Zeilen
- Tabelle b: 1,8 Milliarden Zeilen
- Tabelle c: 168 Millionen Zeilen
- 'Tables' sind eigentlich hive Metastore unterstützt von S3 .
- Es gibt viele doppelte IPs in jeder Tabelle
- Leistung Vorschläge willkommen.
- Auch können Spark SQL-Abfragen ausführen, wenn es anstelle von Hive eine bessere Idee ist.
upvote weil a) die Syntax gearbeitet und b) Rache ist lahm downvotes. – TheProletariat
@DuduMarkovitz Ich nahm es nicht persönlich - ich entfernte meine Antwort, weil es zwei bessere Antworten gab, und meine hat nicht viel hinzugefügt. Ich habe dich nicht abgelehnt. – Siyual
@DuduMarkovitz das funktioniert gut, aber wie bekomme ich dann eine Zählung von allen, die in allen 3 Tabellen existieren? Kann ich einfach eine Auswahlzählung (*) von anwählen, wobei in_a = 1 und in_b = 1 und in_c = 1, oder gibt es einen besseren Weg? –
TheProletariat