Oszlopok átnevezése és elvetése Delta Lake-oszlopleképezéssel
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ést engedélyező táblák csak a Databricks Runtime 10.4 LTS és újabb verziókban olvashatók.
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ó streamelési olvasásokat forrásként, beleértve a Delta Élő táblákat is. Lásd: Streamelés oszlopleképezéssel és sémamódosításokkal.
Oszlopleképezés engedélyezése
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 oszlopleképezés engedélyezéséhez használja a következő parancsot:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Lásd: Oszlopleképezés letiltása.
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")
)
Oszlopleképezés letiltása
A Databricks Runtime 15.3-ban és újabb verziókban a paranccsal eltávolíthatja az DROP FEATURE
oszlopleképezést egy táblából, és leminősítheti a táblaprotokollt.