Delen via


Gegevens overslaan voor Delta Lake

Notitie

In Databricks Runtime 13.3 en hoger raadt Databricks aan om vloeibare clustering te gebruiken voor de indeling van deltatabellen. Clustering is niet compatibel met Z-volgorde. Zie Liquid Clustering gebruiken voor Delta-tabellen.

De informatie over het overslaan van gegevens wordt automatisch verzameld wanneer u gegevens naar een Delta-tabel schrijft. Delta Lake in Azure Databricks maakt gebruik van deze informatie (minimum- en maximumwaarden, null-aantallen en totaal aantal records per bestand) op het moment van query's om snellere query's te bieden.

U moet statistieken hebben verzameld voor kolommen die worden gebruikt in ZORDER verklaringen. Zie Wat is Z-ordering?

Kolommen specificeren voor Delta-statistieken

Delta Lake verzamelt standaard statistieken over de eerste 32 kolommen die zijn gedefinieerd in uw tabelschema. Wanneer voorspellende optimalisatie is ingeschakeld, worden statistieken voor het overslaan van bestanden intelligent gekozen en zijn ze niet beperkt tot de eerste 32 kolommen. Voorspellende optimalisatie voert automatisch de opdracht ANALYZEuit voor het verzamelen van statistieken op door Unity Catalog beheerde tabellen. Databricks raadt aan voorspellende optimalisatie in te schakelen voor alle beheerde tabellen in Unity Catalog om het onderhoud van gegevens te vereenvoudigen en de opslagkosten te verlagen. Zie Voorspellende optimalisatie voor beheerde tabellen van Unity Catalog.

Als u geen predictive optimization gebruikt, kunt u het gedrag wijzigen waarmee statistiekenverzamelingen worden beperkt tot 32 kolommen door een van de volgende tabeleigenschappen in te stellen:

Tabeleigenschap Databricks Runtime ondersteund Beschrijving
delta.dataSkippingNumIndexedCols Alle ondersteunde Databricks Runtime-versies Verhoog of verklein het aantal kolommen waarop Delta statistieken verzamelt. Afhankelijk van de kolomvolgorde.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS en hoger Geef een lijst met kolomnamen op waarvoor Delta Lake statistieken verzamelt. dataSkippingNumIndexedColsVervangt .

Tabeleigenschappen kunnen worden ingesteld bij het maken van tabellen of met ALTER TABLE instructies. Zie Delta-tabeleigenschappen referentie.

Bij het bijwerken van deze eigenschappen worden statistieken voor bestaande gegevens niet automatisch opnieuw berekend. In plaats daarvan heeft dit invloed op het gedrag van het verzamelen van toekomstige statistieken bij het toevoegen of bijwerken van gegevens in de tabel. Delta Lake maakt geen gebruik van statistieken voor kolommen die niet zijn opgenomen in de huidige lijst met statistiekenkolommen.

Als u in Databricks Runtime 14.3 LTS en hoger de tabeleigenschappen hebt gewijzigd of de opgegeven kolommen voor statistieken hebt gewijzigd, kunt u de hercomputatie van statistieken voor een Delta-tabel handmatig activeren met behulp van de volgende opdracht:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Notitie

Lange tekenreeksen worden afgekapt tijdens het verzamelen van statistieken. U kunt ervoor kiezen om lange tekenreekskolommen uit te sluiten van de verzameling statistieken, met name als de kolommen niet vaak worden gebruikt voor het filteren van query's.

Wat is Z-ordering?

Notitie

Databricks raadt het gebruik van vloeibare clustering aan voor alle nieuwe Delta-tabellen. U kunt niet in combinatie met vloeistofclustering gebruiken ZORDER . Zie Liquid Clustering gebruiken voor Delta-tabellen.

Z-volgorde is een techniek om gerelateerde informatie in dezelfde set bestanden te rangschikken. Deze co-locatie wordt automatisch gebruikt door Delta Lake in Azure Databricks-algoritmen voor het overslaan van gegevens. Dit gedrag vermindert de hoeveelheid gegevens die Delta Lake in Azure Databricks moet lezen aanzienlijk. Om gegevens in Z-volgorde te plaatsen, geeft u de kolommen op die moeten worden gesorteerd in de ZORDER BY-clausule.

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

Als u verwacht dat een kolom vaak wordt gebruikt in querypredicaten en als die kolom een hoge kardinaliteit (dat wil gezegd een groot aantal afzonderlijke waarden) heeft, gebruikt u ZORDER BY.

U kunt meerdere kolommen voor ZORDER BY opgeven als een door komma's gescheiden lijst. De effectiviteit van de lokaliteit daalt echter met elke extra kolom. Z-volgorde op kolommen waarvoor geen statistieken zijn verzameld, zou ineffectief zijn en een verspilling van resources. Dit komt doordat voor het overslaan van gegevens kolom-lokale statistieken zijn vereist, zoals min, max en aantal. U kunt het verzamelen van statistieken voor bepaalde kolommen configureren door de volgorde van kolommen in het schema te wijzigen of u kunt het aantal kolommen verhogen waarop statistieken moeten worden verzameld.

Notitie

  • Z-volgorde is niet idempotent , maar is een incrementele bewerking. De tijd die nodig is voor Z-volgorde is niet gegarandeerd om te verminderen over meerdere uitvoeringen. Als er echter geen nieuwe gegevens zijn toegevoegd aan een partitie die alleen Z-geordende was, heeft een andere Z-volgorde van die partitie geen effect.

  • Z-volgorde streeft ernaar om gelijkmatig verdeelde gegevensbestanden te produceren met betrekking tot het aantal tuples, maar niet noodzakelijkerwijs gegevensgrootte op schijf. De twee metingen zijn het vaakst gecorreleerd, maar er kunnen situaties zijn waarin dat niet het geval is, wat leidt tot scheeftrekken in het optimaliseren van taaktijden.

    Als u bijvoorbeeld ZORDER BYdatum en de meest recente records veel breder zijn (bijvoorbeeld langere matrices of tekenreekswaarden) dan in het verleden, wordt verwacht dat de duur van de taak van de OPTIMIZE taak scheef is, evenals de resulterende bestandsgrootten. Dit is echter alleen een probleem voor de OPTIMIZE opdracht zelf; het mag geen negatieve invloed hebben op volgende query's.