Kemas Kini Bertambah dalam Hive: Kaedah Cekap
Mengekalkan jadual utama yang besar dalam Hive dan memuatkan kemas kini tambahan secara berkala memberikan cabaran disebabkan kebimbangan prestasi . Walaupun Hive menyokong operasi kemas kini, pemadaman langsung boleh menjadi tidak cekap. Berikut ialah beberapa strategi berkesan untuk mendekati senario ini:
Full Outer Join (FOJ) dengan TIMBALI
FOJ membolehkan anda menggabungkan data daripada dua jadual, termasuk baris yang terdapat hanya dalam satu daripadanya. Dengan menyertai jadual kemas kini tambahan dengan jadual utama, anda boleh menulis ganti baris sedia ada dan memasukkan baris baharu:
INSERT OVERWRITE target_data [partition()] SELECT 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.COL1 ELSE t.COL1 END AS COL1, ... 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);
UNION ALL dengan row_number()
Sebagai alternatif, anda boleh menggunakan operasi UNION ALL diikuti dengan row_number() untuk mencapai kemas kini tambahan dengan lebih cekap daripada FOJ:
INSERT INTO target_data SELECT *, ROW_NUMBER() OVER (PARTITION BY PK ORDER BY ID) AS row_num FROM (SELECT * FROM target_data UNION ALL SELECT * FROM increment_data) AS t;
Pendekatan ini memberikan nombor baris unik kepada setiap rekod. Baris dengan PK yang sama tetapi nombor baris yang berbeza mewakili kemas kini tambahan.
Petua Pengoptimuman
Atas ialah kandungan terperinci Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap dengan Data Bertambah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!