Kemas Kini Data Tambahan yang Cekap dalam Hive
Hive menyediakan pelbagai pendekatan untuk mengemas kini data secara berperingkat dalam jadual utama. Mari kita terokai kaedah yang paling berkesan.
Penyertaan Luar Penuh
Jika operasi gabungan dengan mod ACID tidak tersedia, anda boleh menggunakan gabungan luar penuh untuk mencari entri yang akan dikemas kini:
insert overwrite target_data [partition() if applicable] 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 --restrict partitions if applicable FULL JOIN increment_data i on (t.PK=i.PK);
Kesatuan Semua dengan Baris Number
Sebagai alternatif, anda boleh menggunakan UNION ALL dengan row_number() untuk mengelakkan penyertaan penuh:
INSERT INTO target_data (pk, col1, col2, ...) SELECT pk, col1, col2, ... FROM increment_data WHERE pk NOT IN (SELECT pk FROM target_data) UNION ALL SELECT pk, col1, col2, ... FROM target_data;
Penyelesaian ini amat berkesan jika anda ingin mengemas kini semua lajur dengan data baharu.
Pengoptimuman Pembahagian
Untuk meningkatkan prestasi, anda boleh menyekat partition dalam jadual target_data yang akan ditimpa dengan menggunakan klausa WHERE partition_col IN (pilih partition_col berbeza daripada increment_data). Selain itu, menghantar senarai partition sebagai parameter dalam klausa WHERE boleh mempercepatkan lagi operasi.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kemas Kini Data Tambahan dengan Cekap dalam Hive?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!