Dela via


Data hoppar över för Delta Lake

Kommentar

I Databricks Runtime 13.3 och senare rekommenderar Databricks att du använder flytande klustring för Delta-tabelllayout. Klustring är inte kompatibelt med Z-beställning. Se Använda flytande klustring för Delta-tabeller.

Data som hoppar över information samlas in automatiskt när du skriver data till en Delta-tabell. Delta Lake på Azure Databricks drar nytta av den här informationen (lägsta och högsta värden, antal null och totalt antal poster per fil) vid frågetillfället för att ge snabbare frågor.

Du måste ha statistik som samlats in för kolumner som används i ZORDER -instruktioner. Se Vad är Z-beställning?.

Ange deltastatistikkolumner

Som standard samlar Delta Lake in statistik över de första 32 kolumnerna som definierats i tabellschemat. När förutsägande optimering är aktiverat väljs statistik som hoppar över filer intelligent och är inte begränsade till de första 32 kolumnerna. Förutsägelseoptimering kör ANALYZEautomatiskt , ett kommando för att samla in statistik, i hanterade Unity Catalog-tabeller. Databricks rekommenderar att du aktiverar förutsägande optimering för alla hanterade Unity Catalog-tabeller för att förenkla dataunderhållet och minska lagringskostnaderna. Se Förutsägande optimering för hanterade Unity Catalog-tabeller.

Viktigt!

Förutsägelseoptimering med ANALYZE finns i offentlig förhandsversion. Den innehåller intelligent statistikinsamling under skrivningar. Använd det här formuläret för att registrera dig för den offentliga förhandsversionen.

Om du inte använder förutsägelseoptimering kan du ändra det beteende som begränsar statistiksamlingar till 32 kolumner genom att ange någon av följande tabellegenskaper:

Tabellegenskap Databricks Runtime stöds beskrivning
delta.dataSkippingNumIndexedCols Alla Databricks Runtime-versioner som stöds Öka eller minska antalet kolumner där Delta samlar in statistik. Beror på kolumnordning.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS och senare Ange en lista med kolumnnamn som Delta Lake samlar in statistik för. dataSkippingNumIndexedColsErsätter .

Tabellegenskaper kan anges när tabellen skapas eller med ALTER TABLE -instruktioner. Se Referens för egenskaper för Delta-tabell.

Uppdatering av dessa egenskaper omberäknar inte statistik automatiskt för befintliga data. I stället påverkar det beteendet för framtida statistikinsamling när du lägger till eller uppdaterar data i tabellen. Delta Lake använder inte statistik för kolumner som inte ingår i den aktuella listan med statistikkolumner.

Om du har ändrat tabellegenskaperna eller ändrat de angivna kolumnerna för statistik i Databricks Runtime 14.3 LTS och senare kan du manuellt utlösa omberäkning av statistik för en Delta-tabell med hjälp av följande kommando:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Kommentar

Långa strängar trunkeras under statistikinsamlingen. Du kan välja att undanta långa strängkolumner från statistiksamlingen, särskilt om kolumnerna inte används ofta för filtrering av frågor.

Vad är Z-beställning?

Kommentar

Databricks rekommenderar att du använder flytande kluster för alla nya Delta-tabeller. Du kan inte använda ZORDER i kombination med flytande klustring.

Z-beställning är en teknik för att samplacera relaterad information i samma uppsättning filer. Den här samlokaliteten används automatiskt av Delta Lake på Azure Databricks datahoppande algoritmer. Det här beteendet minskar avsevärt mängden data som Delta Lake på Azure Databricks behöver läsa. Till Z-orderdata anger du de kolumner som ska beställas ZORDER BY i -satsen:

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Om du förväntar dig att en kolumn ska användas ofta i frågepredikat och om kolumnen har hög kardinalitet (dvs. ett stort antal distinkta värden) använder ZORDER BYdu .

Du kan ange flera kolumner för ZORDER BY som en kommaavgränsad lista. Effekten av lokaliteten sjunker dock med varje extra kolumn. Z-beställning på kolumner som inte har statistik som samlats in på dem skulle vara ineffektivt och slöseri med resurser. Det beror på att datahopp kräver kolumnlokal statistik som min, max och antal. Du kan konfigurera statistikinsamling för vissa kolumner genom att ordna om kolumner i schemat, eller så kan du öka antalet kolumner att samla in statistik om.

Kommentar

  • Z-beställning är inte idempotent utan syftar till att vara en inkrementell åtgärd. Den tid det tar för Z-beställning är inte garanterat att minska över flera körningar. Men om inga nya data har lagts till i en partition som bara var Z-sorterad, kommer en annan Z-beställning av partitionen inte att ha någon effekt.

  • Z-beställning syftar till att producera jämnt balanserade datafiler med avseende på antalet tupplar, men inte nödvändigtvis datastorleken på disken. De två måtten är oftast korrelerade, men det kan finnas situationer när så inte är fallet, vilket leder till skevhet i optimera aktivitetstider.

    Om du ZORDER BY till exempel datum och de senaste posterna är mycket bredare (till exempel längre matriser eller strängvärden) än tidigare, förväntas OPTIMIZE jobbets aktivitetsvaraktighet vara skev, samt de resulterande filstorlekarna. Detta är dock bara ett problem för OPTIMIZE själva kommandot. Det bör inte ha någon negativ inverkan på efterföljande frågor.