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.modenameengedé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")
)