2017-03-15 3 views
0

Ich habe eine folgende Abfrage und es dauert 12 Stunden in HUE auszuführen. Ich möchte die Leistung der Abfrage erhöhen. Lassen Sie mich wissen, welche Änderungen ich in der Abfrage implementieren können, um die Leistung in HUE UmgebungSo erhöhen Sie die HQL-Leistung

SELECT ordernum, 
     Min(distance) mindist, 
     Min(CASE 
      WHEN type_name = 'T' 
        OR (type_name = 'I' 
         AND item LIKE '%D%') THEN distance 
      ELSE 9999999 
      END)  min_t, 
     Min(CASE 
      WHEN type_name = 'A' THEN distance 
      ELSE 9999999 
      END)  min_a 
FROM (SELECT a.ordernum, 
       b.id, 
       b.type_name, 
       b.item, 
       Round(Least(Sqrt(Pow(b.sty-a.nrthng, 2) 
           + Pow(b.stx-a.estng, 2)), 
        Sqrt(Pow(b.endy-a.nrthng, 2) 
          + Pow(b.endx-a.estng, 2)))) 
       distance 
     FROM temp_b a, 
       min_b1 b 
     WHERE ((b.stx BETWEEN (a.estng - 1000) AND (a.estng + 1000) 
        AND b.sty BETWEEN (a.nrthng - 1000) AND 
       (a.nthing + 1000)) 
        OR (b.endx BETWEEN (a.estng - 1000) AND (a.esng + 1000) 
         AND b.endy BETWEEN (a.nrthng - 1000) AND 
       (a.nrthng + 1000)))) a 
GROUP BY ordernum 
+0

Bitte formatieren Sie die Abfrage, um die Lesbarkeit zu erhöhen. – anon

Antwort

0

Meine concers sind über Ihre Abfrage zu erhöhen Bedingung beizutreten. Wie ich sehe, haben Sie Tabellen eine und b. Gibt es Schlüsselfelder, damit die Tabellen übereinstimmen? Ich meine, Feld f1 aus der Tabelle ein die gleiche Bedeutung wie Feld f2 hat aus Tabelle b so konnten sie verbunden werden. Sie könnten auch eine temporäre Tabelle mit Informationen aus beiden Tabellen erstellen, um den Overhead für die Netzwerkkommunikation und den Datentransfer zu entfernen, da Ihr Hadoop-Cluster mehr als einen einzelnen Knoten enthält.

Verwandte Themen