2016-05-27 3 views
0

Im Ausführen dieser Abfrage unten auf Spark, aber es funktioniert nicht. Wenn es bei der Stufe 13 ankommt, blockiert es. Und der Speicherplatz erhöht sich, während blockiert wird in der gleichen Phase nichts und dann, wenn die Festplatte voll wird. Etwas stimmt nicht mit der Abfrage. Siehst du, was in der Spark-Abfrage falsch ist?Spark-Abfrage etwas falsch, weil die Verarbeitung in einer Stufe blockiert und bleibt dort blockiert, bis die Festplatte voll

Zunächst erstelle ich einen Blick in hive:

create view q2_min_ps_supplycost as 
select 
    p_partkey as min_p_partkey, 
    min(ps_supplycost) as min_ps_supplycost 
from 
    part, 
    partsupp, 
    supplier, 
    nation, 
    region 
where 
    p_partkey = ps_partkey 
    and s_suppkey = ps_suppkey 
    and s_nationkey = n_nationkey 
    and n_regionkey = r_regionkey 
    and r_name = 'EUROPE' 
group by 
    p_partkey; 

Dann wird die Abfrage in Funken mit hivecontext verwendet:

select 
     s_acctbal, 
     s_name, 
     n_name, 
     p_partkey, 
     p_mfgr, 
     s_address, 
     s_phone, 
     s_comment 
    from 
     part, 
     supplier, 
     partsupp, 
     nation, 
     region, 
     q2_min_ps_supplycost 
    where 
     p_partkey = ps_partkey 
     and s_suppkey = ps_suppkey 
     and p_size = 37 
     and p_type like '%COPPER' 
     and s_nationkey = n_nationkey 
     and n_regionkey = r_regionkey 
     and r_name = 'EUROPE' 
     and ps_supplycost = min_ps_supplycost 
     and p_partkey = min_p_partkey 
    order by 
     s_acctbal desc, 
     n_name, 
     s_name, 
     p_partkey 
    limit 100; 
+0

Nun, Sie verbinden viele Tische zusammen. Wie groß sind die Tische? Und können Sie einen Screenshot der DAG hinzufügen, damit wir sehen können, was in Phase 13 ist? –

Antwort

1

Sie die Abfrage in mehreren Abfragen devide können, so dass Sie nur zwei Tabellen mitmachen Um das gleiche Ergebnis zu erzielen, wird die Größe der Zwischendateien minimiert und Blockierungen vermieden.