A Delta Lake konfigurálása az adatfájl méretének szabályozásához
Feljegyzés
A cikkben szereplő javaslatok nem vonatkoznak a Unity Catalog által felügyelt táblákra. A Databricks a Unity Catalog által felügyelt táblák használatát javasolja az összes új Delta-tábla alapértelmezett beállításaival.
A Databricks Runtime 13.3-at vagy újabb verzióját használva a Databricks javasolja a fürtszolgáltatás használatát a Delta-táblaelrendezéshez. Lásd: Folyékony fürtözés használata Delta-táblákhoz.
A Databricks prediktív optimalizálást javasol a Delta-táblák automatikus futtatásáhozOPTIMIZE
.VACUUM
Lásd a Delta Lake prediktív optimalizálása című témakört.
A Databricks Runtime 10.4 LTS-ben és újabb verziókban az automatikus tömörítés és az optimalizált írások mindig engedélyezve vannak , UPDATE
és DELETE
műveletekhezMERGE
. Ez a funkció nem tiltható le.
A Delta Lake lehetővé teszi a célfájl méretének manuális vagy automatikus konfigurálását írásokhoz és műveletekhez OPTIMIZE
. Az Azure Databricks számos beállítást automatikusan hangol, és a megfelelő méretű fájlok keresésével automatikusan javítja a táblázat teljesítményét.
A Unity Catalog által felügyelt táblák esetében a Databricks automatikusan hangolja a konfigurációk többségét, ha SQL Warehouse-t vagy Databricks Runtime 11.3 LTS-t vagy újabb verziót használ.
Ha a Databricks Runtime 10.4 LTS-ről vagy az alábbi verzióról frissít számítási feladatot, olvassa el a Frissítés háttérbeli automatikus tömörítésre című témakört.
Mikor kell futtatni? OPTIMIZE
Az automatikus tömörítés és az optimalizált írások csökkentik a fájlproblémákat, de nem helyettesítik teljesen a OPTIMIZE
fájlokat. Különösen az 1 TB-nál nagyobb táblák esetében a Databricks azt javasolja, hogy a fájlok további konszolidálása érdekében ütemezés szerint fusson OPTIMIZE
. Az Azure Databricks nem fut ZORDER
automatikusan táblákon, ezért a továbbfejlesztett adatkiugrás engedélyezéséhez együtt ZORDER
kell futniaOPTIMIZE
. Lásd: A Delta Lake adatkihagyása.
Mi az automatikus optimalizálás az Azure Databricksben?
Az automatikus optimalizálás kifejezés néha a beállítások delta.autoOptimize.autoCompact
és delta.autoOptimize.optimizeWrite
a . Ezt a kifejezést visszavonták az egyes beállítások külön-külön történő leírásának javára. Tekintse meg a Delta Lake automatikus tömörítését az Azure Databricksen , és optimalizált írásokat a Delta Lake-hez az Azure Databricksen.
Automatikus tömörítés a Delta Lake-hez az Azure Databricksben
Az automatikus tömörítés a Delta-táblapartíciókban lévő kis fájlokat kombinálja a kis fájlproblémák automatikus csökkentése érdekében. Az automatikus tömörítés azután következik be, hogy egy táblába történő írás sikeres volt, és szinkron módon fut az írást végző fürtön. Az automatikus tömörítés csak a korábban nem tömörített fájlokat tömöríti.
A kimeneti fájl méretét a Spark-konfiguráció spark.databricks.delta.autoCompact.maxFileSize
beállításával szabályozhatja. A Databricks az autotuning használatát javasolja a számítási feladat vagy a tábla mérete alapján. Tekintse meg az Autotune-fájlméretet a számítási feladat és az Autotune fájlmérete alapján a táblázatméret alapján.
Az automatikus tömörítés csak olyan partíciók vagy táblák esetén aktiválódik, amelyek legalább bizonyos számú kis fájllal rendelkeznek. Az automatikus tömörítés aktiválásához szükséges fájlok minimális számát igény szerint módosíthatja a beállítással spark.databricks.delta.autoCompact.minNumFiles
.
Az automatikus tömörítés a táblázat vagy a munkamenet szintjén engedélyezhető az alábbi beállításokkal:
- Táblatulajdonság:
delta.autoOptimize.autoCompact
- SparkSession beállítás:
spark.databricks.delta.autoCompact.enabled
Ezek a beállítások a következő beállításokat fogadják el:
Beállítások | Működés |
---|---|
auto (ajánlott) |
Hangolja a célfájl méretét, miközben tiszteletben tartja az egyéb autotuning funkciókat. A Databricks Runtime 10.4 LTS-t vagy újabb verziót igényel. |
legacy |
Alias a következőhöz true : . A Databricks Runtime 10.4 LTS-t vagy újabb verziót igényel. |
true |
A célfájl mérete 128 MB. Nincs dinamikus méretezés. |
false |
Kikapcsolja az automatikus tömörítést. A munkamenet szintjén beállítható az automatikus tömörítés felülbírálása a számítási feladatban módosított összes Delta-tábla esetében. |
Fontos
A Databricks Runtime 9.1 LTS-ben, amikor más írók olyan műveleteket hajtanak végre, mint például DELETE
az UPDATE
OPTIMIZE
automatikus MERGE
tömörítés, akkor a többi feladat tranzakcióütközéssel meghiúsulhat. Ez nem probléma a Databricks Runtime 10.4 LTS és újabb verziókban.
Optimalizált írások a Delta Lake-hez az Azure Databricksben
Az optimalizált írások javítják a fájlméretet az adatok írása során, és kihasználják a táblázat későbbi olvasásait.
Az optimalizált írások a particionált táblák esetében a leghatékonyabbak, mivel csökkentik az egyes partíciókra írt kis fájlok számát. Kevesebb nagy fájl írása hatékonyabb, mint sok kis fájl írása, de az írási késés továbbra is nőhet, mivel az adatok össze vannak fonva a megírás előtt.
Az alábbi képen az optimalizált írások működése látható:
Feljegyzés
Előfordulhat, hogy a kód fut coalesce(n)
, vagy repartition(n)
közvetlenül az adatok írása előtt szabályozza a megírt fájlok számát. Az optimalizált írások nem igénylik ezt a mintát.
Az optimalizált írások alapértelmezés szerint engedélyezve vannak a Következő műveletekhez a Databricks Runtime 9.1 LTS és újabb verziókban:
MERGE
UPDATE
albekérdezésekkelDELETE
albekérdezésekkel
Az optimalizált írások az SQL-raktárak használatakor is engedélyezve CTAS
vannak utasításokhoz és INSERT
műveletekhez. A Databricks Runtime 13.3 LTS-ben és újabb verziókban a Unity Katalógusban regisztrált összes Delta-tábla optimalizálta a particionált táblákra vonatkozó CTAS
utasításokhoz és INSERT
műveletekhez engedélyezett írási műveleteket.
Az optimalizált írások a táblázat vagy a munkamenet szintjén engedélyezhetők az alábbi beállításokkal:
- Táblabeállítás:
delta.autoOptimize.optimizeWrite
- SparkSession beállítás:
spark.databricks.delta.optimizeWrite.enabled
Ezek a beállítások a következő beállításokat fogadják el:
Beállítások | Működés |
---|---|
true |
A célfájl mérete 128 MB. |
false |
Az optimalizált írások kikapcsolása. A munkamenet szintjén beállítható az automatikus tömörítés felülbírálása a számítási feladatban módosított összes Delta-tábla esetében. |
Célfájl méretének beállítása
Ha a Delta-táblázatban lévő fájlok méretét szeretné finomhangolni, állítsa a táblázat tulajdonságát delta.targetFileSize
a kívánt méretre. Ha ez a tulajdonság be van állítva, minden adatelrendezési optimalizálási művelet a lehető legjobban megkísérli létrehozni a megadott méretű fájlokat. Ilyenek például az optimalizálás vagy a Z-sorrend, az automatikus tömörítés és az optimalizált írások.
Feljegyzés
A Unity Catalog által felügyelt táblák és SQL-raktárak, illetve a Databricks Runtime 11.3 LTS és újabb verziók használatakor csak OPTIMIZE
a parancsok tartják tiszteletben a targetFileSize
beállítást.
Táblatulajdonság |
---|
delta.targetFileSize Típus: Méret bájtban vagy nagyobb egységekben. A célfájl mérete. Például ( 104857600 bájt) vagy 100mb .Alapértelmezett érték: Nincs |
Meglévő táblák esetén a tulajdonságokat az ALTER TABLE SET TBL PROPERTIES SQL parancs használatával állíthatja be és törölheti. Ezeket a tulajdonságokat automatikusan is beállíthatja, amikor új táblákat hoz létre Spark-munkamenet-konfigurációkkal. A részletekért tekintse meg a Delta-tábla tulajdonságaira vonatkozó referenciát .
Autotune-fájlméret számítási feladat alapján
A Databricks azt javasolja, hogy true
állítsa a táblatulajdonságot delta.tuneFileSizesForRewrites
minden olyan táblára, amelyet több MERGE
vagy DML-művelet céloz meg, függetlenül a Databricks Runtime-tól, a Unity Catalogtól vagy más optimalizálásoktól. Ha be van true
állítva, a tábla célfájlmérete sokkal alacsonyabb küszöbértékre van beállítva, ami felgyorsítja az írásigényes műveleteket.
Ha nincs explicit módon beállítva, az Azure Databricks automatikusan észleli, hogy egy Delta-táblán az előző 10 műveletből 9 művelet volt-e MERGE
művelet, és ezt a táblatulajdonságot a következőre true
állítja. A viselkedés elkerülése érdekében false
explicit módon kell beállítania ezt a tulajdonságot.
Táblatulajdonság |
---|
delta.tuneFileSizesForRewrites Típus: Boolean A fájlméretek finomhangolása az adatelrendezés optimalizálásához. Alapértelmezett érték: Nincs |
Meglévő táblák esetén a tulajdonságokat az ALTER TABLE SET TBL PROPERTIES SQL parancs használatával állíthatja be és törölheti. Ezeket a tulajdonságokat automatikusan is beállíthatja, amikor új táblákat hoz létre Spark-munkamenet-konfigurációkkal. A részletekért tekintse meg a Delta-tábla tulajdonságaira vonatkozó referenciát .
Autotune fájlméret táblázatméret alapján
A manuális finomhangolás szükségességének minimalizálása érdekében az Azure Databricks automatikusan behangolja a Delta-táblák fájlméretét a tábla mérete alapján. Az Azure Databricks kisebb fájlméreteket fog használni a kisebb táblákhoz, és nagyobb méretű fájlméreteket a nagyobb táblákhoz, hogy a táblázatban lévő fájlok száma ne nőjön túl nagyra. Az Azure Databricks nem automatikusan szinkronizálja azokat a táblákat, amelyeket adott célmérettel vagy gyakori átírásokkal rendelkező számítási feladat alapján hangolt.
A célfájl mérete a Delta-tábla aktuális méretén alapul. 2,56 TB-nál kisebb táblák esetén az automatikusan létrehozott célfájl mérete 256 MB. A 2,56 TB és 10 TB közötti méretű táblák esetében a célméret lineárisan, 256 MB-ról 1 GB-ra nő. 10 TB-nál nagyobb táblák esetén a célfájl mérete 1 GB.
Feljegyzés
Amikor egy tábla célfájlmérete növekszik, a parancs nem optimalizálja újra a OPTIMIZE
meglévő fájlokat nagyobb fájlokra. A nagy táblák ezért mindig tartalmazhatnak olyan fájlokat, amelyek kisebbek a célméretnél. Ha ezeket a kisebb fájlokat is nagyobb fájlokra kell optimalizálni, akkor a tábla tulajdonságával konfigurálhat rögzített célfájlméretet a delta.targetFileSize
táblához.
Ha egy táblázatot növekményesen ír, a célfájlméretek és -fájlok száma a táblázat méretétől függően közel lesz a következő számokhoz. A táblázatban szereplő fájlszám csak példa. A tényleges eredmények számos tényezőtől függően eltérőek lesznek.
Tábla mérete | Célfájl mérete | A táblázatban lévő fájlok hozzávetőleges száma |
---|---|---|
10 GB | 256 MB | 40 |
1 TB | 256 MB | 4096 |
2,56 TB | 256 MB | 10240 |
3 TB | 307 MB | 12108 |
5 TB | 512 MB | 17339 |
7 TB | 716 MB | 20784 |
10 TB | 1 GB | 24437 |
20 TB | 1 GB | 34437 |
50 TB | 1 GB | 64437 |
100 TB | 1 GB | 114437 |
Adatfájlban írt sorok korlátozása
Időnként előfordulhat, hogy a szűk adatokat tartalmazó táblák olyan hibát tapasztalnak, amely miatt egy adott adatfájl sorainak száma meghaladja a Parquet formátum támogatási korlátait. A hiba elkerülése érdekében az SQL-munkamenet konfigurációjának spark.sql.files.maxRecordsPerFile
használatával megadhatja, hogy egy Delta Lake-tábla egyetlen fájljába legfeljebb hány rekordot írjon. Nulla vagy negatív érték megadása nem jelent korlátot.
A Databricks Runtime 11.3 LTS-ben és újabb verziókban a DataFrameWriter lehetőséget maxRecordsPerFile
is használhatja a DataFrame API-k használatával egy Delta Lake-táblába való íráshoz. Ha maxRecordsPerFile
meg van adva, a rendszer figyelmen kívül hagyja az SQL-munkamenet-konfiguráció spark.sql.files.maxRecordsPerFile
értékét.
Feljegyzés
A Databricks csak akkor javasolja ezt a lehetőséget, ha a fent említett hiba elkerülése érdekében szükséges. Ez a beállítás továbbra is szükséges lehet néhány Unity Catalog által felügyelt, nagyon szűk adattal rendelkező táblához.
Frissítés a háttér automatikus tömörítésére
A háttér automatikus tömörítése a Unity Catalog által felügyelt táblákhoz érhető el a Databricks Runtime 11.3 LTS és újabb verziókban. Örökölt számítási feladat vagy tábla áttelepítésekor tegye a következőket:
- Távolítsa el a Spark-konfigurációt
spark.databricks.delta.autoCompact.enabled
a fürt vagy a jegyzetfüzet konfigurációs beállításai közül. - Az egyes táblák esetében futtassa
ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact)
az örökölt automatikus tömörítési beállítások eltávolítását.
Az örökölt konfigurációk eltávolítása után látnia kell, hogy a háttér automatikus tömörítése automatikusan aktiválódik az összes Unity Catalog által felügyelt táblához.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: