A Delta Lake kollációs támogatása
A Databricks Runtime 16.1-ben és újabb verziókban megadhatja a szövegmezők kollációját a Delta-táblákhoz.
A táblázat rendezésének engedélyezése hozzáadja a collations-preview
írótábla funkciót. A Databricks Runtime 15.4-ben és azokat követő verziókban rendezési beállítással ellátott táblákat olvashat. Lásd Hogyan kezeli az Azure Databricks a Delta Lake-funkciók kompatibilitását?.
Jegyzet
Alapértelmezés szerint a Delta Lake a karakterlánc mezők osztályozási sorrendjét UTF8_BINARY
-ra állítja.
Táblázat létrehozása oszlop szinten kollációval
Az alábbi paranccsal új táblázatot hozhat létre oszlopszinten rendezéssel:
CREATE TABLE $tableName (
nonCollatedColName STRING,
collatedColName STRING COLLATE UNICODE,
structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
mapColName MAP<STRING, STRING COLLATE UNICODE>,
arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta
Táblázatoszlop módosítása rendezés megadásához
A meglévő oszlopokat az alábbi parancsokkal frissítheti rendezés használatára:
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType
Egy nem alapértelmezett rendezés eltávolítása (ha van ilyen):
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY
Az oszlop karakterkészletének módosítása utf8_lcase
-re:
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE
Ha módosítja egy tábla rendezését, az nem frissíti automatikusan a korábban írt adatok statisztikáit vagy adatelrendezését. Az új rendezés során az előzményadatokra való fájlugrás javítása érdekében a Databricks a következőket javasolja:
- Futtassa a
ANALYZE table_name COMPUTE DELTA STATISTICS
a meglévő adatfájlok fájlkihagyási statisztikáinak frissítéséhez. - Folyékony fürtözéssel rendelkező táblák esetében futtassa a
OPTIMIZE FULL table_name
parancsot a folyékony fürtözés frissítéséhez. - A
ZORDER
használó táblák esetében tegye a következőket:Tiltsa le a növekményes optimalizálást a Spark-munkamenetben az alapértelmezett Spark-konfiguráció felülbírálásával az alábbi paranccsal:
SET spark.databricks.optimize.incremental=false
A
OPTIMIZE table_name ZORDER BY zorder_column
-t futtassa az összes meglévő adatfájl újraírásához.
Az Azure Databricks mindig tiszteletben tartja a rendezést a lekérdezés eredményeiben.
Táblázat rendezésének letiltása
A rendszerezési funkció elvetése előtt explicit módon le kell tiltania a rendszerezést minden egyes sztringoszlophoz a táblázatban.
Az alábbi szintaxissal állíthatja be egy oszlop rendezési beállítását UTF8_BINARY
:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY
A tábla funkció elvetéséhez futtassa a következő parancsot:
ALTER TABLE table_name
DROP FEATURE collations-preview
Lásd a Delta tábla funkcióinak elhagyása.
Sémafejlődés és rendezés
A kolláció a sémafejlődéssel az alábbi szabályok szerint hat kölcsön.
- Ha már létezik forrásoszlop a céltáblában, a céltábla oszlopának rendezése változatlan marad.
- Ha egy forrásoszlophoz rendezés van megadva, a céltáblához hozzáadott oszlop a megadott rendezést használja.
- Ha a céltábla nem támogatja a kollációt, amikor egy kollációval rendelkező oszlopot adnak hozzá, akkor a
collations-preview
táblázat funkció válik elérhetővé.
Korlátozások
A rendezést engedélyező táblákra az alábbi korlátozások vonatkoznak:
- A Databricks Runtime által nem felismert rendezéssel külsőleg létrehozott deltatáblák kivételt képeznek lekérdezéskor.
- Jelenleg nincs támogatás a Delta-megosztáshoz.
- Az csoportosított oszlopok nem használhatók
CHECK
korlátozások esetén. - A létrehozott oszlopok nem használhatnak kollációt.
- Az csoportosított oszlopok nem használhatók kinyíló szűrőindex-oszlopokkal.
- A Scalához vagy Pythonhoz készült OSS Delta Lake API-k nem támogatják a rendezést. A rendezés engedélyezéséhez Spark SQL- vagy DataFrame API-kat kell használnia.
- A dinamikus partíció felülírása nem támogatott a csoportosított oszlopokon.
- Az csoportosított oszlopokra nem lehet hivatkozni a strukturált streamelési állapotalapú lekérdezésekben.
- Azok a külső olvasók, amelyek nem veszik figyelembe a
collations-preview
tábla funkciót, aUTF8_BINARY
alapértelmezett rendezési sorrendet használják. - A
MAP
nem rendelkezhet olyan kulccsal, amely egy csoportosított sztring. - Az UniForm nem működik rendezésekkel.