Oszlopok átnevezése és elvetése Delta Lake-oszlopleképezéssel
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Az Azure Databricks támogatja a Delta Lake-táblák oszlopleképezését, amely lehetővé teszi, hogy a metaadat-módosítások adatfájlok újraírása nélkül törölve vagy átnevezve jelöljék meg az oszlopokat. Lehetővé teszi továbbá, hogy a felhasználók a Parquet által nem engedélyezett karaktereket ( például szóközöket) használva nevezze el a Delta táblaoszlopait, hogy a felhasználók közvetlenül betölthessenek CSV- vagy JSON-adatokat a Delta-ba anélkül, hogy az előző karakterkorlátozások miatt át kellene nevezni az oszlopokat.
Fontos
Az oszlopleképezés engedélyezése lehetővé teszi a véletlenszerű fájlelőtagok használatát is, ami megszünteti az adatok Hive-stílusú particionálással történő feltárásának lehetőségét. Lásd: Do Delta Lake and Parquet share partitioning strategies?.
A táblák oszlopleképezésének engedélyezése megszakíthatja a Delta-változási adatcsatornára támaszkodó alsóbb rétegbeli műveleteket. Lásd: Adatcsatornákra vonatkozó korlátozások módosítása az oszlopleképezést engedélyező táblák esetében.
Ha oszlopleképezést engedélyez a táblákon, az megszakíthatja a Delta-táblázatból származó adatfolyamok forrásként való olvasását, beleértve a Delta Live Tableset is. Lásd: Streamelés oszlopleképezéssel és sémamódosításokkal.
Delta Lake-oszlopleképezés engedélyezése
Fontos
Egy tábla oszlopleképezésének engedélyezése frissíti a Delta tábla verzióját. Ez a protokollfrissítés visszavonhatatlan. Az oszlopleképezést engedélyező táblák csak a Databricks Runtime 10.4 LTS és újabb verziókban olvashatók.
Az oszlopleképezéshez a következő Delta-protokollok szükségesek:
- Olvasó 2-es vagy újabb verziója.
- Író 5-ös vagy újabb verziója.
A szükséges protokollverziókkal rendelkező Delta-táblák esetében az oszlopleképezést a következő beállítással delta.columnMapping.mode
name
engedélyezheti: .
Az alábbi paranccsal frissítheti a táblaverziót, és engedélyezheti az oszlopleképezést:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '2',
'delta.minWriterVersion' = '5',
'delta.columnMapping.mode' = 'name'
)
Feljegyzés
Az oszlopleképezést az engedélyezés után nem kapcsolhatja ki. Ha megpróbál beállítani 'delta.columnMapping.mode' = 'none'
, hibaüzenet jelenik meg.
Oszlop átnevezése
Feljegyzés
A Databricks Runtime 10.4 LTS-ben és újabb verziókban érhető el.
Ha egy Delta-tábla oszlopleképezése engedélyezve van, átnevezhet egy oszlopot:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
További példákért lásd a Delta Lake táblaséma frissítését.
Oszlopok eltávolítása
Feljegyzés
A Databricks Runtime 11.3 LTS-ben és újabb verziókban érhető el.
Ha egy Delta-tábla oszlopleképezése engedélyezve van, elvethet egy vagy több oszlopot:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
További részletekért lásd a Delta Lake táblaséma frissítését.
Támogatott karakterek az oszlopnevekben
Ha egy Delta-tábla oszlopleképezése engedélyezve van, szóközöket és a következő karaktereket is felveheti a táblázat oszlopnevei közé: ,;{}()\n\t=
.
Streamelés oszlopleképezéssel és sémamódosításokkal
Fontos
Ez a funkció nyilvános előzetes verzióban érhető el a Databricks Runtime 13.3 LTS-ben és újabb verziókban.
Megadhat egy sémakövetési helyet a Delta-táblákból való streamelés engedélyezéséhez, ha engedélyezve van az oszlopleképezés. Ez elhárítja azt a problémát, amely miatt a nem additív sémamódosítások hibás adatfolyamokat eredményezhetnek.
Az adatforráson átolvasott streamek mindegyikének saját meg kell adnia a sajátját schemaTrackingLocation
. A megadottnak schemaTrackingLocation
a streamelési írás céltáblájának megadott checkpointLocation
könyvtárában kell lennie.
Feljegyzés
Több forrás deltatáblából származó adatokat egyesítő streamelési számítási feladatokhoz egyedi könyvtárakat kell megadnia az checkpointLocation
egyes forrástáblákon belül.
A beállítással schemaTrackingLocation
megadhatja a sémakövetés elérési útját, ahogyan az a következő kód példájában is látható:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)