Rumah > Java > javaTutorial > Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap dengan Data Bertambah?

Bagaimana Mengemas kini Jadual Sarang Besar dengan Cekap dengan Data Bertambah?

Linda Hamilton
Lepaskan: 2024-11-19 10:26:02
asal
334 orang telah melayarinya

How to Efficiently Update Large Hive Tables with Incremental Data?

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

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

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

  • Optimumkan kedua-dua kaedah dengan mengehadkan partition kepada yang terjejas oleh kemas kini sahaja.
  • Menggunakan UNION ALL dengan row_number() boleh memberikan peningkatan prestasi yang ketara apabila mengemas kini semua lajur.
  • Untuk kes di mana operasi gabungan tidak tersedia dalam mod ACID, strategi ini menawarkan penyelesaian praktikal untuk kemas kini tambahan.

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!

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