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.
Belangrijk
Azure Databricks biedt archiveringsondersteuning voor alleen Azure Archive. Zie Azure-documenten over het optimaliseren van kosten met levenscyclusbeheer.
Waarom moet u archiveringsondersteuning inschakelen?
Archiveringsondersteuning staat alleen toe dat query's die correct kunnen worden beantwoord zonder gearchiveerde bestanden aan te raken. Deze query's omvatten de query's die:
- Alleen querymetagegevens.
- Filters hebben waarvoor geen gearchiveerde bestanden hoeven te worden gescand.
Alle query's waarvoor gegevens in gearchiveerde bestanden zijn vereist, mislukken.
Belangrijk
Azure Databricks retourneert nooit resultaten voor query's waarvoor gearchiveerde bestanden het juiste resultaat moeten retourneren.
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 query's op gearchiveerde gegevens te voorkomen, indien mogelijk. Er worden ook nieuwe syntaxis toegevoegd om bestanden te identificeren die moeten worden hersteld vanuit archiveringsopslag om query's te voltooien.
Het inschakelen van archiveringsondersteuning voor een tabel in Azure Databricks maakt of wijzigt geen levenscyclusbeleid dat is gedefinieerd voor uw cloudobjectopslag. Voor de gewenste resultaten moet uw levenscyclusbeleid voor de cloud en de delta.timeUntilArchived
instelling gelijk zijn.
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 gearchiveerde bestanden, waardoor de rekenkracht wordt verminderd en gebruikers query's snel 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.
Belangrijk
Als u de fout Not enough files to satisfy LIMIT
krijgt, beschikt uw tabel niet over voldoende gegevensrijen in niet-gearchiveerde bestanden om te voldoen aan het aantal records dat is opgegeven door LIMIT
. Verlaag de LIMIT
component om voldoende niet-gearchiveerde rijen te vinden om te voldoen aan de opgegeven LIMIT
.
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');
Het inschakelen van archiveringsondersteuning vertelt Azure Databricks effectief om bestanden te negeren die ouder zijn dan de opgegeven periode. Als u deze instelling inschakelt zonder dat er levenscyclusbeleid is ingesteld voor uw cloudobjectopslag, negeert Azure Databricks nog steeds bestanden op basis van deze opgegeven drempelwaarde, maar worden er geen gegevens gearchiveerd.
Delta Lake communiceert niet rechtstreeks met het beleid voor levenscyclusbeheer 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. Herstel de benodigde gearchiveerde bestanden volgens gedocumenteerde instructies van uw objectopslagprovider. Zie Hoe controleert Azure Databricks op herstelde gegevens hoe Azure Databricks-voorbeeld voor herstelde gegevens?.
Notitie
Tijdens deze bewerking heeft Delta Lake alleen toegang tot de gegevensstatistieken in het transactielogboek. Dit zijn standaard de volgende statistieken die worden verzameld voor de eerste 32 kolommen in de tabel:
- Minimumwaarden
- Maximumwaarden
- Null-aantallen
- Totaal aantal records
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 aan predicaten te bieden die velden bevatten waarop gegevens zijn gepartitioneerd, z-geordend of geclusterd om het aantal bestanden te verminderen dat moet worden hersteld.
Gearchiveerde gegevens bijwerken of verwijderen
De bewerking mislukt als u een MERGE
, UPDATE
of DELETE
bewerking uitvoert die van invloed is op gegevens in gearchiveerde bestanden. U moet gegevens herstellen naar een opslaglaag die ondersteuning biedt voor snel ophalen om deze bewerkingen uit te voeren. Gebruik SHOW ARCHIVED FILES
deze functie om te bepalen welke bestanden u moet herstellen.
Hoe kan azure Databricks-voorbeeld voor herstelde gegevens worden gebruikt?
Wanneer Azure Databricks een scan voorbereidt op een tabel waarvoor archiveringsondersteuning is ingeschakeld, worden bestanden die ouder zijn dan de opgegeven bewaarperiode die door de query is vereist, gebruikt om te bepalen of bestanden al dan niet zijn hersteld.
Als in de resultaten wordt aangegeven dat de bestanden waarvan wordt aangenomen dat ze moeten worden gearchiveerd, zijn hersteld, gaat Azure Databricks ervan uit dat alle bestanden voor de query zijn hersteld en dat de queryprocessen zijn verwerkt.
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 een best-effort poging, maar werkt alleen op verwijderingsvectorbestanden en waarnaar wordt verwezen gegevensbestanden 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 (om meer tijd toe te voegen voordat archivering wordt geactiveerd), kan het bijwerken van de eigenschap delta.timeUntilArchived
naar de nieuwe waarde leiden tot fouten. Cloudproviders herstellen bestanden niet automatisch vanuit gearchiveerde opslag wanneer het bewaarbeleid voor gegevens wordt gewijzigd. Dit betekent dat bestanden die eerder in aanmerking komen 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:
- Alle records tussen 60 en 90 dagen worden gearchiveerd wanneer het beleid wordt gewijzigd.
- Gedurende 30 dagen worden er geen nieuwe bestanden gearchiveerd (de oudste niet-gearchiveerde bestanden zijn 60 dagen oud wanneer het beleid wordt verlengd).
- Na 30 dagen 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 er voldoende tijd is verstreken voordat alle bestanden moeten worden gearchiveerd.- Volgens het bovenstaande voorbeeld wordt elke dag voor de eerste 30 dagen de gegevenswaarde van een andere dag beschouwd als gearchiveerd door Azure Databricks, maar moet deze nog steeds worden gearchiveerd door de cloudprovider. Dit leidt niet tot 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 gearchiveerde gegevensbestanden nauwkeurig weer. - Deze aanpak is alleen nodig als u toegang moet hebben 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 bijwerkt, delta.timeUntilArchived
wordt niet gewijzigd welke gegevens worden gearchiveerd. Er worden alleen wijzigingen aangebracht in welke gegevens Azure Databricks wordt behandeld alsof deze zijn gearchiveerd.