Hive: Kemas Kini Bertambah Cekap untuk Jadual Utama
Tinjauan Keseluruhan Masalah
Menyelenggarakan meja utama yang besar dalam Hive memerlukan strategi untuk mengendalikan kemas kini data tambahan dengan cekap. Cabarannya terletak pada mengimbangi kelajuan dan ketepatan apabila mengurus kedua-dua data baharu dan dikemas kini.
Pendekatan
Pendekatan 1: Padam dan Sisipkan
Kebaikan: Sisipan pantas
Keburukan: Pemadaman perlahan
Pendekatan 2: Kenyataan Kemas Kini
Kebaikan: Kemas kini yang tepat
Keburukan: Sangat lambat disebabkan oleh逐条更新。
Penyelesaian Dioptimumkan
Jika mod ACID tidak tersedia, gabungan FULL OUTER JOIN atau UNION ALL dan row_number() menyediakan penyelesaian yang cekap:
Pertanyaan 1 (FULL OUTER JOIN):
insert overwrite target_data [partition()] SELECT --select new if exists, old if not exists case when i.PK is not null then i.PK else t.PK end as PK, case when i.PK is not null then i.PK else t.PK end as PK, ... case when i.PK is not null then i.COL_n else t.COL_n end as COL_n FROM target_data t FULL JOIN increment_data i on (t.PK=i.PK);
Pertanyaan 2 (UNION ALL):
INSERT OVERWRITE TABLE target_data SELECT * FROM incremental_data UNION ALL SELECT * FROM target_data WHERE NOT (PK IN (SELECT PK FROM incremental_data));
Petua
Faedah Penyelesaian Dioptimumkan
Atas ialah kandungan terperinci Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap Secara Berperingkat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!