Oszlopok átnevezése és törlé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 oszlopokat töröltként vagy átnevezettként jelöljék meg. 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.
Az oszlopleképezést engedélyező particionált táblák a partíciókönyvtárak oszlopnevei helyett véletlenszerű előtagokat használnak. Lásd A Delta Lake és a Parquet azonos particionálási stratégiákat alkalmaz-e?.
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 Az oszlopleképezést engedélyező táblák adatcsatorna-korlátozásainak módosításacímű témakört.
Ha oszlopleképezést engedélyez a táblákon, az megszakíthatja a Delta-táblából származó streamelési olvasásokat forrásként, beleértve a DLT-t is. Lásd: Adatfolyam oszlopleképezéssel és sémamódosításokkal.
Oszlopok leképezésének engedélyezése
Az oszlopleképezéshez a következő Delta-protokollok szükségesek:
- Az Olvasó program 2-es vagy újabb verziója.
- Writer 5-ös vagy újabb verziója.
A szükséges protokollverziókkal rendelkező Delta-táblák esetében engedélyezheti az oszlopleképezést, ha delta.columnMapping.mode
-t name
-re állítja.
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: Delta Lake táblaséma frissítése.
Oszlopok törlése
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 információ: Delta Lake táblaséma frissítése.
Támogatott karakterek az oszlopnevekben
Ha egy Delta-tábla oszlopleképezése engedélyezve van, a táblázat oszlopneveiben szóközök és karakterek is szerepelhetnek: ,;{}()\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 végzett minden adatfolyam-olvasásnál meg kell adni a saját schemaTrackingLocation
-jét. A megadott schemaTrackingLocation
a streameléshez használt céltábla checkpointLocation
megadott könyvtárban kell tárolni.
Megjegyzés
Több forrás deltatáblából származó adatokat egyesítő streamelési számítási feladatokhoz minden forrástáblához egyedi könyvtárakat kell megadnia a checkpointLocation
belül.
A schemaTrackingLocation
lehetőség a sémakövetés elérési útjának megadására szolgál, ahogyan az a következő példakódban 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 DROP FEATURE
paranccsal eltávolíthatja az oszlopleképezést egy táblából, és leminősítheti a táblaprotokollt.