Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Hive-tyylinen osiointi jakaa Delta-taulukon fyysisiin alihakemistoihin yhden tai useamman osiosarakkeen arvojen perusteella. Jokainen yksilöllinen osion sarakkeiden arvojen yhdistelmä luo erillisen hakemiston. Tämä asettelu mahdollistaa osien karsinnan: moottori ohittaa kokonaisia hakemistoja, kun kysely suodattaa osion saraketta.
Vinkki
Useimmille Fabric Runtime 2.0:sta alkaville kuormille suositeltu datan asettelun strategia on
Täydelliset nesteen klusterointiohjeistukset löytyvät kohdasta Nesteen klusterointi.
Milloin käyttää osiointia
Delta Laken osioinnin ensisijainen käyttötapaus on mahdollistaa samanaikaiset kirjoitusoperaatiot, jotka eivät ole ristiriidassa. Delta Lake käyttää optimistista samanaikaisuuden hallintaa, ja kaksi toimintoa, jotka koskettavat samoja tiedostoja, voivat olla ristiriidassa. Osiointi mahdollistaa samanaikaisten toimintojen kohdistamisen erillisiin tiedostojoukkoihin toimimalla erillisillä osioilla.
Käytä osiointia, kun:
- Sinulla on samanaikaisia kirjoittajia, jotka täytyy päivittää, poistaa tai yhdistää samaan taulukkoon ilman ristiriitoja—esimerkiksi useat putket käsittelevät eri liiketoimintayksiköitä tai alueita samanaikaisesti.
- Ositussarakkeesi kardinaalisuus on matalasta kohtalaiseen (kymmeniä tai satoja erillisiä arvoja, ei tuhansia). Huomautus: suuremmat taulukot voivat mahtua useampiin osioihin. Kohdenna vähintään 1 GB dataa kussakin osiossa.
- Osioarvot vastaavat kirjoituskuvioitasi – jokainen kirjoittaja kohdistaa luonnollisesti tiettyyn osioon.
Important
Pelkästään tiedostojen ohittamisessa ja lukusuorituskyvyssä nestemäinen klusterointi on tehokkaampaa kuin osiointi. Nestemäinen klusterointi poistaa riskin pienten tiedostojen ongelmista korkean kardinaalisuuden osiosarakkeista ja antaa mahdollisuuden muuttaa klusterointistrategiaa taulukon elinkaaren aikana. Valitse osiointi ensisijaisesti silloin, kun haluat erottaa samanaikaiset kirjoittajat.
Luo ositettu taulukko
CREATE TABLE sales.orders (
order_id BIGINT,
order_date DATE,
region STRING,
amount DECIMAL(10,2)
)
USING DELTA
PARTITIONED BY (region)
Osiointi ja samanaikaiset kirjoitukset
Jakaminen on Delta Laken ensisijainen mekanismi ristiriitojen välttämiseksi samanaikaisten kirjoitusoperaatioiden välillä. Kun taulukko on osioitu, eri osioihin kohdistuvat operaatiot toimivat erillisillä tiedostojoukoilla eivätkä ole ristiriidassa keskenään.
Esimerkiksi kaksi samanaikaista MERGE INTO operaatiota taulukossa, joka on jaettu nimellä region , eivät ole ristiriidassa, kunhan kumpikin kohdistuu eri alueeseen – edellyttäen, että osion sarake sisältyy nimenomaisesti yhdistämisehtoon:
-- Pipeline A: processes North America only
MERGE INTO sales.orders AS target
USING staged_orders AS source
ON target.order_id = source.order_id
AND target.region = 'NA'
AND source.region = 'NA'
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *
Ilman osiointia – tai ilman osion sarakkeen sisällyttämistä operaatioehtoon – nämä samat operaatiot voivat olla ristiriidassa, vaikka ne loogisesti muuttaisivat eri rivejä. Osion sarakkeen täytyy näkyä yhdistämisehdossa, ei vain lähdetiedoissa. Ilman sitä Delta Lake ei voi validointihetkellä määrittää, että molemmat operaatiot koskettivat erillistä tiedostojoukkoa.
Täydellisen oppaan konfliktityypeistä ja ratkaisustrategioista löytyy kohdasta Samanaikaisuuden hallinta.
Yleisiä sudenkuoppia
-
Korkean kardinaalisuuden osiosarakkeet (esimerkiksi
user_idmiljoonilla arvoilla) luovat tuhansia pieniä hakemistoja ja tiedostoja, mikä heikentää sekä kirjoitus- että lukusuorituskykyä.- Päivämääräsarakkeet tulisi valita varoen. Monissa taulukoissa jakaminen päivämääräsarakkeella johtaa liian moniin pieniin osioihin. Kohdenna vähintään 1 GB dataa kussakin osiossa.
- Osion sarakkeita ei voi muuttaa taulun luomisen jälkeen ilman, että koko taulu kirjoitetaan uudelleen.
- Pienten tiedostojen ongelma on yleinen suoratoistossa tai useissa liitoksissa moniin osioihin, koska jokainen kirjoitus luo vähintään yhden tiedoston per osio.
- Osiointi ja nesteklusterointi eivät sovi yhteen samalla pöydällä. Sinun täytyy valita yksi strategia.
Vertaa osiointia ja nestemäistä klusterointia
| Ominaisuus | Hive-tyylinen jakaminen | Liquid-klusterointi |
|---|---|---|
| Sopii parhaiten | Samanaikainen kirjoittajan eristäminen | Yleiskäyttöinen tiedostojen ohittaminen ja lukuoptimointi |
| Rakeisuus | Yksi hakemisto per erillistä arvoa (tai yhdistelmää) | Tiedostotason arvoalueet, ei hakemistoja |
| Korkea kardinaalisuus | Luo tuhansia pieniä tiedostoja/hakemistoja | Toimii luonnollisesti; Bin-data oikean kokoisiksi tiedostoiksi |
| Sarakkeen muutokset | Vaatii täydellisen taulukon uudelleenkirjoituksen |
ALTER TABLE CLUSTER BY Sovellus seuraavassa OPTIMIZE |
| Kirjoituspolku | Osion sarake on tunnettava kirjoitushetkellä | Mikä tahansa sarake voidaan ryhmitellä jälkikäteen |
| Samanaikaiset kirjoitukset | Erilliset jaot välttävät konflikteja | Liite-vain ilman ristiriitoja; Päivitykset/poistot/yhdistämiset voivat olla ristiriidassa jakamattomissa tauluissa |
| Pienen tiedoston ongelma | Yleistä suoratoisto- tai toistuvien inserttien kanssa | Tiivistyksen avulla hallittu OPTIMIZE |