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 , ANALYZE PURGE |
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 TABLE DROP 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 FILES
u , 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.timeUntilArchived
bijwerken.
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:
- Wanneer het beleid wordt gewijzigd, worden alle records tussen 60 en 90 dagen al gearchiveerd.
- 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).
- 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:
- 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 naar90 days
.
- 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 de67 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.
- Hoewel het cloudbeleid is ingesteld op 90 dagen, verandert de werkelijke leeftijd van gearchiveerde gegevens in realtime. Na 7 dagen geeft de instelling
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.