Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Unity Catalog beheerde tabellen zijn het standaard en aanbevolen tabeltype in Azure Databricks. Unity Catalog beheert opslag, lay-out en onderhoud voor je, wat opslag- en rekenkosten verlaagt terwijl tabellen automatisch geoptimaliseerd blijven. Voor een volledige beschrijving van beheerde tabellen en hun voordelen, zie Unity Catalog managed tables voor Delta Lake en Apache Iceberg.
Als u een externe of refererende Delta Lake-tabel wilt converteren naar een door Unity Catalog beheerde tabel in Azure Databricks, gebruikt u de ALTER TABLE ... SET MANAGED opdracht of, voor externe tabellen, Catalog Explorer. De conversie behoudt tabelconfiguraties, waaronder naam, instellingen, machtigingen en weergaven, en behoudt de tabelgeschiedenis.
De exacte SET MANAGED syntaxis hangt af van of je brontabel extern of buitenlands is. Het gebruik van de verkeerde syntaxis voor je brontype zorgt ervoor dat het commando faalt. Voordat je converteert, zie Selecteer het juiste commando voor je brontabel.
Voor externe tabelconversies geldt SET MANAGED ook het volgende:
- Minimaliseert de downtime van lezer en schrijver.
- Verwerkt gelijktijdige schrijfbewerkingen tijdens de conversie.
- Hiermee kunt u een geconverteerde beheerde tabel terugdraaien naar een externe tabel.
- Leidt padgebonden lees- en schrijfbewerkingen om zodat verouderde code na conversie goed blijft werken.
Hoewel je (CTAS) ook kunt gebruiken CREATE TABLE AS SELECT om een externe tabel om te zetten in een beheerde tabel, raadt SET MANAGED Databricks het aan vanwege de voorgaande voordelen.
Kies het juiste commando voor je brontabel
Externe tabellen en vreemde tabellen gebruiken verschillende SET MANAGED syntaxis. Bevestig je brontabeltype in Catalog Explorer of met DESCRIBE EXTENDED voordat je converteert, en gebruik vervolgens het bijbehorende commando, zoals beschreven in de volgende tabel:
| Type van brontabel | Command | Aantekeningen |
|---|---|---|
| External | ALTER TABLE ... SET MANAGED |
Voeg MOVE of COPY niet toe. Zie de vereisten en conversie-instructies. |
| Buitenlands | ALTER TABLE ... SET MANAGED {MOVE \| COPY} |
Je moet ofwel MOVE of COPYopgeven. Zie de vereisten en conversie-instructies. |
De MOVE en-opties COPY zijn alleen voor buitenlandse tabellen, omdat een externe catalogus de gegevens en metadata van een vreemde tabel beheert.
MOVE en COPY controleer of die brontabel na de conversie toegankelijk blijft. Externe tabellen hebben geen externe catalogus om te behouden, dus deze keuze geldt niet voor hen.
Als je het verkeerde commando gebruikt voor je brontabeltype, geeft Spark de volgende fouten:
- Als je bij het converteren van een externe tabel de opties
MOVEofCOPYtoevoegt, mislukt de opdracht metDELTA_ALTER_TABLE_SET_MANAGED_UNSUPPORTED_COPY_MOVE_SYNTAX. Om dit op te lossen, voerALTER TABLE ... SET MANAGEDuit zonder een van beide opties te gebruiken. - Als je zowel
MOVEalsCOPYweglaat bij het omzetten van een vreemde tabel, faalt het commando metDELTA_ALTER_TABLE_SET_MANAGED_COPY_OR_MOVE_REQUIRED. Om op te lossen, voeg je ofwelMOVEofCOPY. toe.
Prerequisites
De vereisten verschillen afhankelijk van of u een externe tabel of een foreign table converteert.
Externe tabellen
Het converteren van externe tabellen naar beheerde tabellen heeft de volgende vereisten:
- Indeling: De tabel moet de Delta Lake-indeling gebruiken.
-
Runtime: U moet Databricks Runtime 17.3 LTS of hoger of serverloze berekeningen gebruiken om
SET MANAGED,UNSET MANAGEDofTRUNCATE UNIFORM HISTORY. - Machtigingen: Eigendom van de tabel.
- Lezers en schrijvers: Azure Databricks lezers en schrijvers voor uw brontabellen moeten Databricks Runtime 15.4 LTS of hoger gebruiken. Als uw lezers of schrijvers versie 14.3 LTS of ouder gebruiken, raadpleegt u Oudere lezers en schrijvers.
-
Externe clients: externe (niet-Databricks)-clients moeten leesbewerkingen naar beheerde tabellen van Unity Catalog ondersteunen. Zie Toegangen tot tabellen met Delta-clients.
- Gebruik het Access Insights-dashboard om te zien of lezers en schrijvers die toegang hebben tot uw tabellen Databricks Runtime of externe niet-Databricks zijn.
-
Compatibiliteit van functies: Als uw tabel
minReaderVersion=2,minWriterVersion=7entableFeatures={..., columnMapping}bevat, mislukt de opdrachtSET MANAGEDmet eenDELTA_TRUNCATED_TRANSACTION_LOG-fout. Controleer of uw tabel deze eigenschappen heeft met behulp vanDESCRIBE DETAIL. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.
Na de conversie worden pad-gebaseerde lees- en schrijfbewerkingen automatisch omgeleid naar de nieuwe beheerde locatie met een lichte impact op de prestaties. Databricks raadt aan om alle padgebaseerde toegang te migreren naar op naam gebaseerde toegang om de overhead van de prestaties te voorkomen. Zie Padgebaseerde omleiding.
Important
Als u conflicten wilt voorkomen, annuleert u bestaande OPTIMIZE opdrachttaken (liquide clustering, compressie, ZORDER) die op uw externe tabel worden uitgevoerd en plant u geen taken terwijl u uw externe tabellen converteert naar beheerde tabellen.
Externe tabellen
Wanneer u een refererende tabel converteert naar een beheerde tabel, worden alleen refererende tabellen ondersteund die zijn gefedereerd met hive-metastore en Glue Federation .
Voor het converteren van externe tabellen naar beheerde tabellen gelden de volgende voorwaarden:
- Data-indeling: De externe tabel moet de indeling van Delta Lake gebruiken. Als u een eenmalige conversie voor Parquet wilt uitvoeren, raadpleegt u Converteren naar Delta Lake.
- Runtime: Databricks Runtime 17.3 of hoger.
- Tabeltype: Het hms-tabeltype (Hive metastore) moet een externe HMS-tabel zijn. De opdracht mislukt als de tabel een beheerde HMS-tabel is.
-
Machtigingen:
OWNER- ofMANAGE-machtigingen op de tabel enCREATE-machtiging op deEXTERNAL LOCATION.
Als u refererende tabellen wilt converteren naar externe tabellen, raadpleegt u Een refererende tabel converteren naar een externe Unity Catalog-tabel.
Downtime en tijd voor het kopiëren van gegevens
De SET MANAGED opdracht minimaliseert of elimineert downtime in vergelijking met alternatieve benaderingen, zoals DEEP CLONE.
Externe tabellen
Het conversieproces voor externe tabellen maakt gebruik van een tweestapsbenadering:
- Initiële gegevenskopie (geen downtime): met de opdracht worden tabelgegevens en Delta-transactielogboek gekopieerd van de externe locatie naar de beheerde locatie. Actieve lees- en schrijfbewerkingen naar de externe tabel blijven zonder onderbreking doorgaan.
- Overschakelen naar beheerde locatie (korte downtime):doorvoeringen die tijdens de eerste stap naar de externe locatie zijn gemaakt, worden verplaatst naar de beheerde locatie en de metagegevens van de tabel worden bijgewerkt om de nieuwe beheerde locatie te registreren. Tijdens deze stap worden alle schrijfoperaties naar de externe locatie tijdelijk geblokkeerd, wat resulteert in downtime voor schrijfbewerkingen. Lezers van Databricks Runtime 16.4 LTS of hoger hebben geen downtime, maar lezers van Databricks Runtime 15.4 LTS en lager kunnen downtime ervaren.
In de volgende tabel ziet u geschatte downtime op basis van de grootte van de brontabel en een geschatte doorvoersnelheid van 0,5-2 GB/CPU-kern/minuut:
| Tabelgrootte | Aanbevolen clustergrootte | Geschatte tijd voor het kopiëren van gegevens | Geschatte downtime voor lezer en schrijver |
|---|---|---|---|
| 100 GB of minder | 32-core / X-Large SQL Warehouse | ~6 min of minder | ~1-2 min of minder |
| 1 terabyte | 64-core / 2X-large SQL Warehouse | ~30 min. | ~1-2 min. |
| 10 TB | 256-core / 4X-Large SQL Warehouse | ~1,5 uur | ~1-5 min. |
Note
Downtime kan variëren op basis van factoren zoals de bestandsgrootte, het aantal bestanden en het aantal doorvoeringen.
Externe tabellen
De downtime voor de conversie van foreign tables hangt af van de vraag of u MOVE of COPY gebruikt:
- Voor
MOVEkan downtime optreden zoals beschreven voor externe tabellen. Zie Externe tabellen. - Voor
COPY, u bent verantwoordelijk voor het beheren van downtime omdat het conversieproces de brontabel kopieert naar de beheerde opslaglocatie, waardoor twee afzonderlijke kopieën van de gegevens worden gemaakt. U bent verantwoordelijk voor het uitschakelen van lees- en schrijfbewerkingen naar de brontabel in de externe catalogus en het migreren van workloads om de nieuwe beheerde tabel te gebruiken.
Converteren naar een beheerde tabel
Zet een externe tabel om met behulp van Catalog Explorer of SQL, of zet een foreign table om met behulp van SQL.
Externe tabellen met de Catalogusverkenner (bèta)
Important
Het converteren van externe naar beheerde tabellen met Behulp van Catalog Explorer bevindt zich in de bètaversie.
Met Catalog Explorer kunt u een of meer externe tabellen tegelijk in een schema converteren.
Ga naar de tabel of het schema dat u wilt converteren in Catalog Explorer.
Klik onder Over deze tabel (tabeldetailpagina) of Over dit schema (schemadetailpagina) op Optimalisaties verkennen.
Klik in het dialoogvenster Waarom migreren naar beheerde tabellen in Unity Catalog opDoorgaan.
Selecteer de externe tabellen die u wilt converteren. Als u het dialoogvenster vanaf een tabeldetailpagina hebt geopend, selecteert Catalog Explorer de tabel vooraf. Gebruik de zoekbalk om aanvullende tabellen te zoeken. Beheerde tabellen kunnen niet worden geselecteerd.
Klik op Conversienotebook maken.
Voer desgewenst een naam in voor het notitieblok. Standaard wordt het notebook opgeslagen in uw thuismap. Klik op Bladeren om het op te slaan op een andere locatie.
Controleer in het notebook de aanbevolen procedures en controleer of u aan alle vereisten voldoet.
Voer de SET cel MANAGED Query's uit.
Nadat de cel is uitgevoerd, wordt het tabeltype weergegeven als BEHEERD in plaats van EXTERNAL in Catalog Explorer. Vernieuw de pagina als de status niet onmiddellijk wordt bijgewerkt.
Externe tabellen met SQL
Om een externe tabel te converteren, gebruik je SET MANAGED zonder de optie MOVE of COPY. Die opties gelden alleen voor externe tabellen. Zie Kies het juiste commando voor je brontabel.
Afhankelijk van of je externe tabel Apache Iceberg-reads heeft ingeschakeld, voer je een van de volgende commando's uit. Zie Controleren of Iceberg-leestoegang is ingeschakeld om te verifiëren of Iceberg-leestoegang is ingeschakeld voor uw tabel.
Voer de volgende opdracht uit voor externe tabellen van Unity Catalog zonder Iceberg-leesbewerkingen ingeschakeld:
ALTER TABLE catalog.schema.my_external_table SET MANAGED;Na de conversie kunt u Iceberg-leesbewerkingen inschakelen voor uw beheerde tabel zonder problemen met compatibiliteit.
Voer de volgende opdracht uit voor externe tabellen van Unity Catalog waarvoor Iceberg-leesbewerkingen al zijn ingeschakeld:
ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;Opnemen
TRUNCATE UNIFORM HISTORYom optimale tabelprestaties en -compatibiliteit te behouden.TRUNCATE UNIFORM HISTORYkort alleen de UniForm Iceberg-geschiedenis in en verwijdert de Delta-geschiedenis niet. Deze opdracht resulteert in een korte lees- en schrijfdowntime voor Iceberg na de truncatie.
Na de tabelconversie mislukken bestaande lees- en schrijfstromen. Herstart de streams met dezelfde configuraties om automatisch pad-gebaseerde omleiding te gebruiken. Controleer of uw lezers en schrijvers met de beheerde tabel werken. Bekijk het streaminggedrag.
Voorspellende optimalisatie wordt automatisch ingeschakeld na conversie, tenzij u deze handmatig hebt uitgeschakeld. Zie Controleren of voorspellende optimalisatie is ingeschakeld.
Azure Databricks bewaart de gegevens op de externe locatie van uw Unity Catalog gedurende 14 dagen om terugdraaien toe te staan. Zie Een beheerde tabelconversie terugdraaien. Na 14 dagen, met voorspellende optimalisatie ingeschakeld, verwijdert Azure Databricks deze gegevens automatisch om opslag vrij te maken en kosten te besparen. Als u voorspellende optimalisatie uitschakelt, voert u de uitvoering VACUUM uit (hiervoor is Databricks Runtime 17.3 LTS of hoger of serverloze berekening vereist) in de zojuist geconverteerde beheerde tabel na 14 dagen om de opslag zelf vrij te maken.
VACUUM my_converted_table
Note
Zelfs als voorspellende optimalisatie is ingeschakeld, worden gegevens in de externe locatie van uw Unity Catalog mogelijk na 14 dagen niet verwijderd. Dit kan bijvoorbeeld gebeuren wanneer de beheerde tabel niet vaak of klein wordt gebruikt. Als de eerdere gegevens nog aanwezig zijn, voer VACUUM dan handmatig uit om die te verwijderen.
Azure Databricks verwijdert alleen de gegevens op de externe locatie. Het Delta-transactielogboek en de verwijzing naar de tabel in Unity Catalog worden bewaard.
Externe tabellen met SQL
Om je Unity Catalog externe tabel om te zetten naar een door Unity Catalog beheerde tabel, voer je de volgende opdracht uit. In tegenstelling tot externe tabelconversies vereist een omzetting van een vreemde tabel dat je ofwel MOVE of COPYspecificeert. Als je beide weglaat, faalt het commando met DELTA_ALTER_TABLE_SET_MANAGED_COPY_OR_MOVE_REQUIRED.
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
source_table
Een bestaande externe tabel in Unity Catalog die is gefedereerd.
MOVEHiermee wordt de tabel geconverteerd naar beheerd en wordt de toegang tot de brontabel in de externe catalogus uitgeschakeld.
Toegang via de externe catalogus of padgebaseerde toegang mislukt nadat u de tabel hebt geconverteerd. Alle lezers en schrijvers in de tabel moeten de Unity Catalog-naamruimte gebruiken voor toegang. Voorbeeld:
SELECT * FROM catalog_name.schema_name.table_name;Padgebaseerde toegang wordt niet ondersteund en mislukt nadat u de tabel hebt geconverteerd. Voorbeeld:
SELECT * FROM delta.`protocol://path/to/table`;De vereisten voor de lezer/schrijverversie en clientcompatibiliteit zijn hetzelfde als beschreven in Vereisten en Oudere lezers en schrijvers.
Voorspellende optimalisatie wordt ingesteld op
INHERITtenzij u deze handmatig hebt geconfigureerd. Als u wilt controleren of voorspellende optimalisatie is ingeschakeld, raadpleeg Controleren of voorspellende optimalisatie is ingeschakeld.
COPYConverteert de tabel naar beheerd zonder de toegang tot de brontabel in de externe catalogus te wijzigen of uit te schakelen.
- Tijdens de conversie naar beheerd kopieert het conversieproces gegevens uit de brontabel naar de beheerde opslaglocatie die is gedefinieerd voor de refererende tabel, waarbij twee afzonderlijke kopieën worden gemaakt: de nieuwe beheerde tabel en de brontabel in de externe catalogus.
- In tegenstelling tot
MOVE, waar lees- en schrijfbewerkingen mislukken, bent u bijCOPYverantwoordelijk voor het correct uitschakelen van lees- en schrijfbewerkingen naar de brontabel in de externe catalogus en ervoor te zorgen dat workloads naar de nieuwe catalogus zijn gemigreerd.
Houd rekening met het volgende:
- Na de tabelconversie moet u alle streamingtaken (lezen of schrijven) opnieuw starten met behulp van de refererende tabel en controleren of uw lezers en schrijvers met de beheerde tabel werken.
- Als u vóór de conversie de brontabel in de externe catalogus verwijdert, wordt in Unity Catalog ook de refererende tabel verwijderd. Nadat u de tabel hebt geconverteerd naar beheerd, heeft het verwijderen van de brontabel in de externe catalogus geen invloed op de beheerde tabel van Unity Catalog.
- Als de opdracht wordt onderbroken tijdens het kopiëren van gegevens, start u deze opnieuw op. Het commando wordt hervat waar het was gebleven.
- Voor conversies van externe tabellen stelt Databricks predictive optimalisatie voor de geconverteerde tabel in op
INHERITin plaats van deze automatisch in te schakelen. Als u wilt controleren of voorspellende optimalisatie is ingeschakeld, raadpleeg Controleren of voorspellende optimalisatie is ingeschakeld.
Warning
Databricks raadt u aan om te voorkomen dat meerdere SET MANAGED opdrachten gelijktijdig in dezelfde tabel worden uitgevoerd, wat kan leiden tot een inconsistente tabelstatus.
Conversie controleren
Als u wilt controleren of de tabel is geconverteerd naar een beheerde tabel, controleert u of de tabel Type is MANAGED. U kunt een van de volgende handelingen uitvoeren:
Open een nieuw tabblad en ga naar Catalogusverkenner. Op het tabblad Details , onder Over deze tabel, wordt het tabeltype weergegeven als Beheerd.
Controleer de tabel
Typedoor de volgende SQL-opdracht uit te voeren:DESCRIBE EXTENDED catalog_name.schema_name.table_nameAls u meerdere tabellen tegelijk wilt controleren of de controle wilt uitvoeren, voert u in plaats daarvan een query
information_schema.tablesuit:SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Verouderde lezers en schrijvers
Databricks raadt aan om alle lezers en schrijvers te upgraden naar Databricks Runtime 15.4 LTS of hoger om gebruik te maken van de volledige mogelijkheden van, waaronder het bewaren van SET MANAGEDtabelgeschiedenissen.
U kunt nog steeds gebruiken SET MANAGED als u lezers of schrijvers hebt voor Databricks Runtime 15.3 of lager. Na het converteren naar een beheerde tabel kunt u echter alleen per versie naar historische doorvoeringen reizen en niet per tijdstempel.
Als u binnen 14 dagen teruggaat naar een externe tabel, wordt tijdreizen naar historische commits van vóór de conversie opnieuw ingeschakeld. Tijdreizen met behulp van tijdstempels worden niet ondersteund voor doorvoeringen in de geconverteerde beheerde tabel tussen conversie en terugdraaien. Zie Een beheerde tabelconversie terugdraaien.
Voor het schrijven naar een tabel na conversie met Databricks Runtime 15.3 of lager moet u de inCommitTimestamp functie verwijderen:
ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;
Omleiding op basis van pad
Nadat u in Databricks Runtime 18.1 en hoger een externe tabel hebt geconverteerd naar een beheerde tabel in Unity Catalog, worden lees- en schrijfbewerkingen op basis van paden naar de vorige externe locatie automatisch omgeleid naar de nieuwe beheerde locatie. Een padgebaseerde leesactie is code zoals SELECT * FROM delta.`/path/to/my_table`. Omleiding op basis van pad vermindert de tijd en moeite die nodig is om te migreren naar beheerde tabellen door verouderde code toe te staan die gebruikmaakt van opslagpaden om door te gaan zonder te herstructureren.
Conversies van foreign tables leiden padgebaseerde toegang niet om.
Voor gebruiksscenario's met lage latentie raadt Azure Databricks aan dat u padgebaseerde toegang migreert naar op naam gebaseerde toegang. Omleiding op padbasis voegt enkele honderden milliseconden overhead toe aan elk padgebaseerd lees- of schrijfproces en vereist dat oude Delta-logboeken actief blijven in uw Unity Catalog externe locatie. Lees- en schrijfbewerkingen op basis van naam hebben geen extra overhead voor prestaties. Zie Padgebaseerde code migreren naar op naam gebaseerd.
Padgebaseerde code migreren naar op naam gebaseerd
Als u besluit geen padgebaseerde omleiding te gebruiken, kunt u verouderde code migreren. Als u wilt migreren, vervangt u padverwijzingen door verwijzingen op basis van een naam.
Het volgende codevoorbeeld bevat een op pad gebaseerde tabelverwijzing naar bestanden:
SELECT * FROM delta.`/path/to/customers_table`;
Vervang de padgebaseerde verwijzing door een op naam gebaseerde verwijzing naar een externe tabel, zoals in de volgende code:
SELECT * FROM catalog_name.schema_name.customers_table;
Streaminggedrag
Streaming met omleiding op basis van pad ondersteunt lees- en schrijfbewerkingen in de volgende Databricks Runtime-versies:
- Leesbewerkingen worden ondersteund in Databricks Runtime 18.1 en hoger.
- Schrijven wordt ondersteund in Databricks Runtime 18.2 en hoger.
Na de conversie moet u alle streamingtaken opnieuw starten om te voorkomen dat u naar de vorige tabellocatie leest of schrijft.
Padgebaseerde streaming-lees- en schrijfbewerkingen mislukken en stoppen op het volgende controlepunt met een migratiebericht:
- Voor leesbewerkingen genereert de stream een fout:
DELTA_STREAMING_INTERRUPTED_BY_MANAGED_TABLE_CONVERSION: The table at <path> has been converted to a Unity Catalog managed table. The stream has been stopped to ensure data consistency. Restart the stream and it will automatically resume from the last committed offset using the converted table. - Voor schrijfbewerkingen genereert de eerste microbatch na de conversie een fout:
Operation not allowed: STREAMING WRITE cannot be performed on a table with redirect feature. The no redirect rules are not satisfied [].
Als u fouten wilt oplossen, start u streams opnieuw op met dezelfde configuraties. Padgebaseerde toegang wordt automatisch doorgestuurd naar de beheerde tabel.
Zie Beperkingen voor beperkingen van padgebaseerde omleidingen.
Problemen met conversiefouten oplossen
In deze sectie wordt beschreven hoe u veelvoorkomende problemen kunt oplossen bij het converteren van externe tabellen naar beheerde tabellen in Unity Catalog met behulp van SET MANAGED.
VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED
Als de conversie mislukt, probeert u altijd dezelfde Databricks Runtime-versie te gebruiken. Metagegevens kunnen verschillend worden geserialiseerd in verschillende versies, wat een VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED fout veroorzaakt als u een conversie opnieuw probeert uit te voeren op een andere Databricks Runtime-versie.
Cluster afsluiten tijdens conversie
Als uw cluster wordt afgesloten tijdens de conversie, kan de opdracht mislukken met DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR. Voer de opdracht opnieuw uit om de conversie te hervatten.
Beschadigde externe tabel
Als de externe tabel al is beschadigd (bijvoorbeeld een ongeldige tabelstatus), kan de conversie mislukken met fouten zoals DELTA_TRUNCATED_TRANSACTION_LOG, DELTA_TXN_LOG_FAILED_INTEGRITYof DELTA_STATE_RECOVER_ERRORS. Voordat u een conversie uitvoert, moet u controleren of u basisbewerkingen kunt uitvoeren in de externe tabel, zoals DESCRIBE DETAIL.
Fout bij bestandsvalidatie
Met SET MANAGED de opdracht wordt gevalideerd of alle bestanden in de meest recente momentopname van de tabel naar de nieuwe beheerde tabellocatie zijn gekopieerd. Als er bestanden ontbreken, mislukt de opdracht met een DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED fout.
Ga als volgt te werk om het probleem op te lossen:
- Controleer uw Spark-stuurprogrammalogboeken om te bepalen welke bestanden niet kunnen worden gemigreerd.
- Controleer of deze bestanden aanwezig zijn op de externe brontabellocatie en toegankelijk zijn.
- Voer de
ALTER TABLE ... SET MANAGEDopdracht opnieuw uit.
Neem contact op met databricks-ondersteuning als het probleem zich blijft voordoen.
Een beheerde tabelconversie terugdraaien
Important
Voor terugdraaiopdrachten is serverloze rekenkracht of Databricks Runtime 17.3 LTS en hoger vereist.
Externe tabel
Nadat u een externe tabel naar een beheerde tabel hebt geconverteerd, kunt u binnen 14 dagen terugdraaien met behulp van de UNSET MANAGED opdracht. Hiermee worden de metagegevens van de tabel bijgewerkt om terug te verwijzen naar de oorspronkelijke externe locatie. Databricks behoudt alle schrijfbewerkingen die na de conversie naar de beheerde locatie zijn gemaakt.
Voer de volgende opdracht uit om terug te keren naar een externe tabel:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;
Houd rekening met de volgende informatie:
- Als de terugdraaiopdracht wordt onderbroken of mislukt, voert u deze opnieuw uit om het opnieuw te proberen.
- U moet uw streamingtaken opnieuw starten na het terugdraaien, net als bij conversie.
- Commits die op de beheerde locatie zijn gemaakt tussen conversie en rollback maken tijdreizen op basis van versie mogelijk, maar niet op basis van tijdstempel.
- Zeven dagen na terugdraaien verwijdert Azure Databricks automatisch gegevens op de beheerde locatie.
Vreemde tabel: MOVE
Warning
U moet UNSET MANAGED uitvoeren voordat u de beheerde tabel verwijdert. Het verwijderen van de tabel zonder eerst uit UNSET MANAGED te voeren kan leiden tot gegevensverlies of inconsistenties.
U kunt de tabelmigratie terugdraaien en weer toegang krijgen tot de brontabel in de externe catalogus met behulp van de UNSET MANAGED opdracht. Terugdraaien vereist twee stappen: eerst moet u de tabel terugdraaien naar een externe tabel en vervolgens de externe tabel verwijderen om de tabel opnieuw te federeren als een refererende tabel.
- Voer de volgende opdracht uit om terug te keren naar een externe tabel:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
- Om de tabel opnieuw te federeren naar een foreign table, verwijdert u de externe tabel met de volgende opdracht:
DROP TABLE catalog.schema.my_managed_table
De externe tabel is beschikbaar na de volgende catalogussynchronisatie.
Houd rekening met de volgende informatie:
- Voor commits die u op de externe locatie hebt gemaakt tussen conversie en rollback, kunt u teruggaan in de tijd op basis van versie, maar niet op basis van tijdstempel.
- Zeven dagen na terugdraaien verwijdert Databricks gegevens op de beheerde locatie.
Vreemde tabel: COPY
Als u de tabelmigratie wilt terugdraaien, hoeft u de UNSET MANAGED opdracht niet uit te voeren omdat de brontabel in de externe catalogus niet is gewijzigd. Verwijder de beheerde tabel en Databricks federeert de tabel na de eerstvolgende catalogussynchronisatie opnieuw als een foreign table.
Terugdraaien controleren
Controleer de terugdraaiacties anders voor externe en refererende tabellen.
Externe tabellen
Om te controleren of uw beheerde tabel met succes is teruggezet naar een externe tabel, controleert u of de tabel TypeEXTERNAL is. U kunt een van de volgende handelingen uitvoeren:
Open een nieuw tabblad en ga naar Catalogusverkenner. Op het tabblad Details , onder Over deze tabel, wordt het tabeltype weergegeven als Extern.
Controleer de tabel
Typedoor de volgende SQL-opdracht uit te voeren:DESCRIBE EXTENDED catalog_name.schema_name.table_nameAls u meerdere tabellen tegelijk wilt controleren of de controle wilt uitvoeren, voert u in plaats daarvan een query
information_schema.tablesuit:SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Externe tabellen
Als u wilt controleren of uw beheerde tabel succesvol is teruggezet naar een externe tabel, controleert u of de tabel TypeFOREIGN is. U kunt een van de volgende handelingen uitvoeren:
Open een nieuw tabblad en ga naar Catalogusverkenner. Op het tabblad Details , onder Over deze tabel, wordt het tabeltype weergegeven als Extern.
Controleer het tabeltype door de volgende SQL-opdracht uit te voeren:
SELECT table_type FROM system.information_schema.tables WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';De
table_typekolom wordt weergegeven alsFOREIGN.
Note
Gebruik DESCRIBE EXTENDED niet om conversies of terugdraaiacties van vreemde tabellen te verifiëren. Federatie maakt gebruik hive_metastore van catalogusgedrag voor deze opdracht, zodat de tabel Type wordt weergegeven als EXTERNAL, ongeacht de werkelijke status van de tabel.
Geavanceerde onderwerpen
Deze sectie bevat geavanceerde onderwerpen voor het converteren van refererende en externe tabellen naar beheerde tabellen.
Converteren op schema- of catalogusniveau
U hebt de volgende twee opties om het converteren van tabellen op schema- of catalogusniveau te automatiseren:
Doorloop de tabellen in uw schema's om elke tabel afzonderlijk te converteren.
Gebruik het project discoverx labs om volledige schema's of catalogi tegelijk te converteren:
df = (dx.from_tables("prod.*.*") .with_sql("ALTER TABLE {full_table_name} SET MANAGED;") .apply())
Zie Databricks Labs en discoverx.
Tabellen maken in een externe catalogus
U kunt externe of beheerde tabellen maken in een vreemde catalogus. Het gedrag is afhankelijk van de schemaconfiguratie:
-
Voor Lijm- of eHMS-schema's of voor schema's met een beheerde locatie die is ingesteld in Unity Catalog: Als u uitvoert
CREATE TABLE foreign_catalog.schema.table, wordt hiermee een beheerde of externe tabel voor Unity Catalog gemaakt. Databricks pusht of synchroniseert de tabel niet naar de externe catalogus. -
Voor schema's van interne Hive-metastoreverbindingen: als u probeert een tabel in een buitenlands schema te maken, wordt er nog steeds een buitenlandse tabel gemaakt en daarnaast ook een tabel in
hive_metastore. - Voor de oude werkruimte-Hive-metastore: Omdat deze lees- en schrijffederatie ondersteunt, wordt er ook een tabel in de interne Hive-metastore gemaakt als u een tabel in de externe catalogus maakt.
DBFS-ondersteunde externe tabellen
Bij het converteren van een tabel met DBFS-ondersteuning slaat Databricks de huidige toewijzing van het DBFS-pad op als de locatie van het cloudpad van de externe tabel.
Beperkingen
Het converteren van externe of refererende tabellen naar beheerde tabellen heeft de volgende beperkingen:
Tabelgeschiedenis voor commits die zijn gemaakt na conversie maar vóór de rollback, maakt tijdreizen op versie mogelijk, maar niet op tijdstempel.
OpenSharing is niet volledig compatibel met de
SET MANAGEDopdracht. Open Sharing wordt ondersteund, maar Databricks-naar-Databricks-delen werkt de beheerde locatie van de tabel van de ontvanger niet automatisch bij. De geadresseerde blijft vanaf de oude locatie lezen totdat u de tabel opnieuw deelt. Voer de volgende opdrachten uit om de tabel opnieuw te delen:ALTER SHARE <share_name> REMOVE TABLE <table_name>; ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;Als de standaard beheerde locatie van uw Unity Catalog-metastore, catalogus of schema zich in een andere cloudregio bevindt dan de opslaglocatie van de brontabel, kunnen er extra kosten voor gegevensoverdracht tussen regio's van uw cloudprovider in rekening worden gebracht.
Voer de volgende opdrachten uit om de locatie van uw schema en catalogus te controleren:
DESC SCHEMA EXTENDED <catalog_name>.<schema_name>; DESC CATALOG EXTENDED <catalog_name>;Voer een van de volgende opdrachten uit om de locatie van uw metastore te controleren:
DESC METASTORE; -- Option 1 SELECT * FROM system.information_schema.metastores; -- Option 2
Beperkingen voor omleiding op basis van pad:
- U moet alle streamingtaken opnieuw starten na de conversie. Bekijk het streaminggedrag.
- Omleiding op basis van pad heeft alleen achterwaartse compatibiliteit voor het migratieproces en maakt geen nieuwe op pad gebaseerde toegang tot beheerde tabellen in Unity Catalog mogelijk.
Beperkingen voor refererende tabellen:
- Alleen externe tabellen die via Hive metastore en Glue Federation zijn gefedereerd, worden ondersteund voor conversie.