2017-03-15 3 views
2

beizutreten ich habe zwei Tabellen eine umfasst etwa 17K (NLIST) Datensätze während die anderen 57K (FNAMES).Effiziente Art und Weise von levenshtein in Hive oder Impala

Ich möchte die beiden durch den Vergleich der Datensätze mit Levenshtein Formel verbinden. Hier

ist das Beispiel für den Inhalt der Tabellen:

Tabelle NLIST:

+------+-------------+ 
| ID | S_NAME | 
+------+-------------+ 
| 1 | Avi  | 
| 2 | Moshe  | 
| 3 | David  | 
.... 

Tabelle FNAMES:

+------+-------------+ 
| ID | NICKNAMES | 
+------+-------------+ 
| 1 | Avile  | 
| 2 | Dudi  | 
| 3 | Moshiko | 
| 4 | Avi  | 
| 5 | DAVE  | 
.... 

Die obigen Tabellen sind nur einige Beispiele. Im realen Fall kann die Spalte names mehr als ein Wort enthalten.

sollte das gewünschte Ergebnis sein:

+------+-------------+--------+ 
| ID | NICKNAMES | S_NAME | 
+------+-------------+--------+ 
| 1 | Avile  | Avi | 
| 2 | Dudi  | David | 
| 3 | Moshiko | Moshe | 
| 4 | Avi  | Avi | 
| 5 | DAVE  | David | 
... 

Hier ist der Code ich benutze:

select FNAMES.NICKNAMES, NLIST.S_NAME 
from NICKNAMES 
LEFT OUTER JOIN NLIST 
ON(true) 
WHERE levenshtein (FNAMES.NICKNAMES, NLIST.S_NAME) <=4 

Der obige Code für eine sehr lange Zeit läuft und ich seinen Lauf gestoppt.

Wie kann ich es in einer angemessenen Zeit laufen lassen?

Darüber hinaus denke ich, dass die levenshtein Entfernung von der Länge der Wörter abhängt. Wie finde ich den optimalen Wert für die Entfernung (in diesem Fall habe ich 4 willkürlich gewählt)?

+0

Avi, für den Anfang, haben Sie ** verschiedene Werte ** aus beiden Tabellen genommen? –

+0

Danke Dudu, Sicher ja ich tat. Die NLIST-Tabelle ist bereits eine eindeutige Tabelle und FNAMES-Tabellen haben keine doppelten Werte. – Avi

Antwort

-2

Hive Tabelle Leistung hängt von verschiedenen Punkt ab.

  • Abfrage enginee
  • Dateiformat
  • Verwendung VEKTORISIERUNG set hive.vectorized.execution.enabled = true;set hive.vectorized.execution.reduce.enabled = true;

Wenn Sie gute Server haben Sie mit Impala versuchen können, und auf jeden Fall ist es schneller als Hive.

Sie können die Feinabstimmung von impala tun, die Ihnen einen Vorteil gibt, diese Abfrage schneller auszuführen. Tuning Impala for Performance

Verwandte Themen