Rumah > Java > javaTutorial > Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap Secara Berperingkat?

Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap Secara Berperingkat?

Mary-Kate Olsen
Lepaskan: 2024-11-14 19:52:02
asal
818 orang telah melayarinya

How to Efficiently Update a Large Hive Table Incrementally?

Hive: Kemas Kini Bertambah Cekap untuk Jadual Utama

Apabila menguruskan jadual Hive yang luas yang memerlukan kemas kini biasa, mencari pendekatan yang cekap adalah penting. Peningkatan baru-baru ini pada Hive termasuk keupayaan kemas kini/masukkan/padam, tetapi memilih penyelesaian optimum tetap menjadi cabaran.

Menggunakan FULL OUTER JOIN untuk Kemas Kini Bertambah

Satu kaedah yang berkesan melibatkan penggunaan FULL OUTER JOIN untuk menggabungkan data kemas kini tambahan dengan jadual utama sedia ada. Dengan menyertai kunci utama, ia mengenal pasti kedua-dua entri yang dikemas kini dan baharu. Pertanyaan di bawah menunjukkan pendekatan ini:

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.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);
Salin selepas log masuk

Pengoptimuman boleh digunakan untuk meningkatkan prestasi, seperti mengehadkan partition dalam jadual sasaran yang akan ditimpa. Melepasi senarai partition sebagai parameter boleh mempercepatkan proses dengan ketara.

Pertimbangkan UNION ALL row_number() untuk Kemas Kini Peringkat Lajur

Jika kemas kini tambahan memerlukan mengemas kini semua lajur dengan data baharu, operasi UNION ALL dengan row_number() boleh digunakan sebagai alternatif kepada FULL OUTER JOIN. Pendekatan ini selalunya menawarkan prestasi yang lebih baik:

SELECT
  PK,
  COL1,
  ...
  COL_N
FROM
  target_data
UNION ALL
SELECT
  PK,
  COL1,
  ...
  COL_N
FROM
  increment_data;
Salin selepas log masuk

Fungsi tetingkap row_number() memberikan nombor unik pada setiap baris, membenarkan pertanyaan mengenal pasti dan mengutamakan rekod kemas kini.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan