Zum Beispiel Im Ausführen einiger Abfragen auf Funken, und in der Spark-UI kann ich sehen, dass einige Abfragen mehr shuffle haben, und diese Shuffle scheint, ist die Menge der Daten lokal gelesen und zwischen gelesen Vollstrecker.Wie wirkt sich die Menge der Daten in Spark gemischt
Aber so verstehe ich nicht eine Sache, zum Beispiel diese Abfrage unter geladenen 7GB von HDFS, aber das Suffel lesen + shufflled schreiben ist mehr als 10GB. Aber ich habe andere Abfragen gesehen, die auch 7GB von HDFS laden und der Shuffle ist wie 500kb. Also verstehe ich das nicht, kannst du bitte helfen? Die Menge der Daten, die gemischt werden, hängt nicht mit den Daten zusammen, die von den hdfs gelesen werden?
select
nation, o_year, sum(amount) as sum_profit
from
(
select
n_name as nation, year(o_orderdate) as o_year,
l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount
from
orders o join
(select l_extendedprice, l_discount, l_quantity, l_orderkey, n_name, ps_supplycost
from part p join
(select l_extendedprice, l_discount, l_quantity, l_partkey, l_orderkey,
n_name, ps_supplycost
from partsupp ps join
(select l_suppkey, l_extendedprice, l_discount, l_quantity, l_partkey,
l_orderkey, n_name
from
(select s_suppkey, n_name
from nation n join supplier s on n.n_nationkey = s.s_nationkey
) s1 join lineitem l on s1.s_suppkey = l.l_suppkey
) l1 on ps.ps_suppkey = l1.l_suppkey and ps.ps_partkey = l1.l_partkey
) l2 on p.p_name like '%green%' and p.p_partkey = l2.l_partkey
) l3 on o.o_orderkey = l3.l_orderkey
)profit
group by nation, o_year
order by nation, o_year desc;
a) Operation b) Konfiguration (Anzahl der Partitionen zum Beispiel) c) initiale Datenverteilung – zero323
Die Frage von OP ist, warum shuffle lesen oder schreiben manchmal weniger ist, während die Eingabe in GBs ist. Welche Faktoren können Shuffle Read Write in diesem Umfang bestimmen oder kontrollieren? –