Ich möchte in eine partitionierte Strukturtabelle aus einer anderen Strukturtabelle einfügen. Die Daten werden in einer einzigen Partition in der Zieltabelle gespeichert. Das Problem ist, dass alle Reduzierstücke sehr schnell fertig sind, aber einer der Reduzierstücke nimmt viel Zeit in Anspruch, da alle Arbeiten an diesen einzelnen Reduzierer gehen.So erzwingen Sie, dass Zeilen gleichmäßig verteilt werden, um in einer partitionierten Tabelle von einer anderen Tabelle unter den Reduzierern Zeilen zu verteilen, um die Leistung zu verbessern
Ich möchte einen Weg finden, eine Arbeit gleich verteilt unter allen Reduzierern zu setzen. Gibt es einen Weg dazu? Wie kann ich die Leistung des Insert-Überschreibens verbessern?
Quelle Tabelle DDL:
CREATE EXTERNAL TABLE employee (id INT,first_name String,latst_name String,email String,gender String) STORED AS TEXTFILE '/emp/data'
TARGET DDL TABLE:
CREATE EXTERNAL TABLE employee_stage (id INT,first_name String,latst_name String,email String,gender String) PARTITIONED BY (batch_id bigint) STORED AS ORC LOCATION '/stage/emp/data'
ist hier, um die Daten-Snapshot
1 Helen Perrie [email protected] Female
2 Rafaelita Jancso [email protected] Female
3 Letti Kelley [email protected] Female
4 Adela Dmisek [email protected] Female
5 Lay Reyner [email protected] Male
6 Robby Felder [email protected] Male
7 Thayne Brunton [email protected] Male
8 Lorrie Roony [email protected] Male
9 Hodge Straun [email protected] Male
10 Gawain Tomblett [email protected] Male
11 Carey Facher [email protected] Male
12 Pamelina Elijahu [email protected] Female
13 Carmelle Dabs [email protected] Female
14 Moore Baldrick [email protected] Male
15 Sheff Morin [email protected] Male
16 Zed Eary [email protected] Male
17 Angus Pollastrone [email protected] Male
18 Moises Hubach [email protected] Male
19 Lilllie Beetham [email protected] Female
20 Mortimer De Hooge [email protected] Male
Die Quelltabelle mehr als 100 Millionen Datensätze enthält.
Hier ist die Hql, die ich verwende.
insert overwrite table employee_stage
PARTITION (batch_id)
SELECT
id,
first_name,
latst_name,
email,
gender,
123456789 as batch_id
FROM employee;
Die Daten werden in einer einzigen Partition gespeichert.
Bitte lassen Sie mich in diesem Zustand wissen, wie kann ich die Leistung verbessern? Gibt es eine Möglichkeit, die Zeilen gleichmäßig auf alle Reduzierungen zu verteilen?
Können Sie zusätzliche Informationen geben? Wie ist Ihr Tisch partitioniert? Was ist dein Datensatz? – Constantine
** (1) ** Bitte fügen Sie die zusätzlichen Informationen zu Ihrem ursprünglichen Beitrag hinzu und löschen Sie die Kommentare ** (2) ** Bitte geben Sie die DDL für beide Tabellen und den Code, den Sie verwenden, um die Zieltabelle –
@DuduMarkovitz I habe die DDL und hql hinzugefügt. Finden Sie bitte. –