Delen via


Archiveringsondersteuning in Azure Databricks

Belangrijk

Deze functie bevindt zich in openbare preview voor Databricks Runtime 13.3 LTS en hoger.

Archiveringsondersteuning in Azure Databricks introduceert een verzameling mogelijkheden waarmee u levenscyclusbeleid in de cloud kunt gebruiken voor cloudobjectopslag met Delta-tabellen.

Zonder archiveringsondersteuning kunnen bewerkingen op Delta-tabellen worden verbroken omdat gegevensbestanden of transactielogboekbestanden zijn verplaatst naar gearchiveerde locaties en niet beschikbaar zijn wanneer er query's worden uitgevoerd. Archiveringsondersteuning introduceert optimalisaties om het uitvoeren van query's op gearchiveerde gegevens zo mogelijk te voorkomen en voegt nieuwe syntaxis toe om bestanden te identificeren die van archief moeten worden hersteld tot volledige query's.

Belangrijk

Azure Databricks heeft alleen archiveringsondersteuning voor Azure Archive. Zie Azure-documenten over het optimaliseren van kosten met levenscyclusbeheer.

Query's die zijn geoptimaliseerd voor gearchiveerde gegevens

Archiveringsondersteuning in Azure Databricks optimaliseert de volgende query's op Delta-tabellen:

Query Nieuw gedrag
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Negeer gearchiveerde bestanden automatisch en retourneer resultaten van gegevens in een niet-gearchiveerde opslaglaag.
Delta Lake-onderhoudsopdrachten: OPTIMIZE, ZORDER, ANALYZEPURGE Negeer gearchiveerde bestanden automatisch en voer onderhoud uit voor de rest van de tabel.
DDL- en DML-instructies die gegevens overschrijven of verwijderen, waaronder: REPLACE TABLE, INSERT OVERWRITE, , TRUNCATE TABLEDROP TABLE Markeer vermeldingen in transactielogboeken voor gearchiveerde doelgegevensbestanden als verwijderd.
FSCK REPAIR TABLE Negeer gearchiveerde bestanden en controleer alleen op bestanden die geen levenscyclusbeleid hebben bereikt.

Zie beperkingen.

Vroege fouten en foutberichten

Voor query's die gearchiveerde bestanden moeten scannen om juiste resultaten te genereren, zorgt het configureren van archiveringsondersteuning voor Delta Lake voor het volgende:

  • Query's mislukken vroeg als ze toegang proberen te krijgen tot bestanden in het archief, waardoor de rekenkracht wordt verminderd en gebruikers snel query's kunnen aanpassen en opnieuw kunnen uitvoeren.
  • Foutberichten informeren gebruikers dat een query is mislukt omdat de query heeft geprobeerd toegang te krijgen tot gearchiveerde bestanden.

Gebruikers kunnen een rapport genereren met bestanden die moeten worden hersteld met behulp van de SHOW ARCHIVED FILES syntaxis. Zie Gearchiveerde bestanden weergeven.

Archiveringsondersteuning inschakelen

U schakelt archiveringsondersteuning in Azure Databricks voor Delta-tabellen in door handmatig het archiveringsinterval op te geven dat is geconfigureerd in het onderliggende levenscyclusbeheerbeleid voor de cloud, zoals in de volgende voorbeeldsyntaxis:

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

Delta Lake communiceert niet rechtstreeks met het lifecyle-beheerbeleid dat is geconfigureerd in uw cloudaccount. Als u het beleid in uw cloudaccount bijwerkt, moet u het beleid in uw Delta-tabel bijwerken. Zie De overgangsregel voor levenscyclusbeheer wijzigen.

Belangrijk

Archiveringsondersteuning is volledig afhankelijk van compatibele Azure Databricks-rekenomgevingen en werkt alleen voor Delta-tabellen. Het configureren van archiveringsondersteuning verandert niet het gedrag, de compatibiliteit of de ondersteuning in OSS Delta Lake-clients of Databricks Runtime 12.2 LTS en lager.

Gearchiveerde bestanden weergeven

Als u bestanden wilt identificeren die moeten worden hersteld om een bepaalde query te voltooien, gebruikt SHOW ARCHIVED FILESu , zoals in het volgende voorbeeld:

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Deze bewerking retourneert URI's voor gearchiveerde bestanden als een Spark DataFrame.

Notitie

Delta Lake heeft alleen toegang tot de gegevensstatistieken in het transactielogboek tijdens deze bewerking (minimumwaarde, maximumwaarde, null-tellingen en het totale aantal records voor de eerste 32 kolommen). De geretourneerde bestanden bevatten alle gearchiveerde bestanden die moeten worden gelezen om te bepalen of records die voldoen aan een predicaat al dan niet aanwezig zijn in het bestand. Databricks raadt u aan predicaten op te geven die velden bevatten waarop gegevens zijn gepartitioneerd, z-geordende of geclusterde, indien mogelijk, om het aantal bestanden te verminderen dat moet worden hersteld.

Beperkingen

De volgende beperkingen gelden:

  • Er bestaat geen ondersteuning voor beleid voor levenscyclusbeheer dat niet is gebaseerd op de aanmaaktijd van bestanden. Dit omvat op toegangstijd gebaseerde beleidsregels en beleid op basis van tags.
  • U kunt niet gebruiken DROP COLUMN voor een tabel met gearchiveerde bestanden.
  • REORG TABLE APPLY PURGE doet er alles aan, maar werkt alleen aan verwijderingsvectorbestanden en gegevensbestanden waarnaar wordt verwezen die niet zijn gearchiveerd. PURGE kan gearchiveerde verwijderingsvectorbestanden niet verwijderen.
  • Het uitbreiden van de overgangsregel voor levenscyclusbeheer leidt tot onverwacht gedrag. Zie De overgangsregel voor levenscyclusbeheer uitbreiden.

De overgangsregel voor levenscyclusbeheer wijzigen

Als u het tijdsinterval voor de overgangsregel voor het cloudlevenscyclusbeheer wijzigt, moet u de eigenschap delta.timeUntilArchivedbijwerken.

Als het tijdsinterval voordat archivering wordt ingekort (minder tijd sinds het maken van bestanden), blijft archiveringsondersteuning voor de Delta-tabel normaal functioneren nadat de tabeleigenschap is bijgewerkt.

De overgangsregel voor levenscyclusbeheer uitbreiden

Als het tijdsinterval voordat archivering wordt verlengd (meer tijd sinds het maken van bestanden), kan het bijwerken van de eigenschap delta.timeUntilArchived naar de nieuwe waarde leiden tot fouten. Cloudproviders herstellen bestanden niet automatisch uit gearchiveerde opslag wanneer het bewaarbeleid voor gegevens wordt gewijzigd. Dit betekent dat bestanden die eerder in aanmerking kwamen voor archivering, maar nu niet als in aanmerking komen voor archivering, nog steeds worden gearchiveerd.

Belangrijk

Als u fouten wilt voorkomen, stelt u de eigenschap delta.timeUntilArchived nooit in op een waarde die groter is dan de werkelijke leeftijd van de laatst gearchiveerde gegevens.

Overweeg een scenario waarin het tijdsinterval voor archivering wordt gewijzigd van 60 dagen in 90 dagen:

  1. Wanneer het beleid wordt gewijzigd, worden alle records tussen 60 en 90 dagen al gearchiveerd.
  2. Gedurende 30 dagen worden er geen nieuwe bestanden gearchiveerd (de oudste niet-gearchiveerde bestanden zijn 60 dagen oud op het moment dat het beleid wordt verlengd).
  3. Nadat 30 dagen zijn verstreken, worden in het levenscyclusbeleid alle gearchiveerde gegevens correct beschreven.

Met delta.timeUntilArchived de instelling wordt het ingestelde tijdsinterval bijgehouden op basis van de tijd die is vastgelegd in het Delta-transactielogboek. Het heeft geen expliciete kennis van het onderliggende beleid. Tijdens de vertragingsperiode tussen de oude archiveringsdrempel en de nieuwe drempelwaarde voor archivering kunt u een van de volgende methoden gebruiken om te voorkomen dat er query's worden uitgevoerd op gearchiveerde bestanden:

  1. U kunt de instelling delta.timeUntilArchived met de oude drempelwaarde laten staan totdat voldoende tijd is verstreken dat alle bestanden zijn gearchiveerd.
    • Na het bovenstaande voorbeeld wordt elke dag voor de eerste 30 dagen nog een dag aan gegevens beschouwd als gearchiveerd door Azure Databricks, maar nog niet gearchiveerd door de cloudprovider. Dit resulteert niet in een fout, maar negeert bepaalde gegevensbestanden die kunnen worden opgevraagd.
    • Werk na 30 dagen het delta.timeUntilArchived bij naar 90 days.
  2. U kunt de instelling delta.timeUntilArchived elke dag bijwerken om het huidige interval tijdens de vertragingsperiode weer te geven.
    • Hoewel het cloudbeleid is ingesteld op 90 dagen, verandert de werkelijke leeftijd van gearchiveerde gegevens in realtime. Na 7 dagen geeft de instelling delta.timeUntilArchived bijvoorbeeld de 67 days leeftijd van alle gegevensbestanden in het archief nauwkeurig weer.
    • Deze aanpak is alleen nodig als u toegang nodig hebt tot alle gegevens in dynamische lagen.

Notitie

Als u de waarde voor bijwerkt delta.timeUntilArchived , wordt niet daadwerkelijk gewijzigd welke gegevens worden gearchiveerd. Er worden alleen wijzigingen aangebracht in welke gegevens Azure Databricks wordt behandeld alsof deze zijn gearchiveerd.