A Delta Lake konfigurálása az adatfájl méretének szabályozásához

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.

Feljegyzés

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.

Ha másként nincs megadva, a jelen cikkben szereplő összes javaslat nem vonatkozik a Unity Catalog által felügyelt, a legújabb futtatókörnyezeteket futtató táblákra.

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 OPTIMIZEfá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.optimizeWritea . 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 DELETEaz UPDATEOPTIMIZE automatikus MERGEtö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ó:

Optimalizált írások

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ésekkel
  • DELETE 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 Standard kiadás T TBL PROPERTIES SQL paranccsal á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 Standard kiadás T TBL PROPERTIES SQL paranccsal á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.