Optimalizace výkonu s využitím ukládání do mezipaměti v Azure Databricks

Azure Databricks využívá ukládání do mezipaměti na disku ke zrychlení čtení dat vytvořením kopií vzdálených datových souborů Parquet v místním úložišti uzlů pomocí rychlého zprostředkujícího datového formátu. Data se ukládají do mezipaměti automaticky vždy, když je potřeba načíst soubor ze vzdáleného umístění. Další čtení stejných dat se pak provádí místně, což má za následek výrazné zvýšení rychlosti čtení. Mezipaměť funguje pro všechny datové soubory Parquet (včetně tabulek Delta Lake).

Poznámka:

Ve skladech SQL a Databricks Runtime 14.2 a novějších CACHE SELECT se příkaz ignoruje. Místo toho se používá vylepšený algoritmus ukládání do mezipaměti disku.

Rozdílová mezipaměť přejmenovaná na mezipaměť disku

Ukládání disků do mezipaměti v Azure Databricks se dříve označovalo jako mezipaměť Delta a mezipaměť DBIO. Chování při ukládání do mezipaměti na disku je proprietární funkce Azure Databricks. Tato změna názvu se snaží vyřešit nejasnosti, že byla součástí protokolu Delta Lake.

Mezipaměť disku vs. mezipaměť Sparku

Mezipaměť disků Azure Databricks se liší od ukládání do mezipaměti Apache Spark. Azure Databricks doporučuje používat automatické ukládání do mezipaměti na disku.

Následující tabulka shrnuje klíčové rozdíly mezi diskem a ukládáním do mezipaměti Apache Spark, abyste mohli zvolit nejlepší nástroj pro váš pracovní postup:

Funkce mezipaměť disku Mezipaměť Apache Sparku
Uloženo jako Místní soubory v pracovním uzlu Bloky v paměti, ale závisí na úrovni úložiště.
Použito pro Libovolná tabulka Parquet uložená v ABFS a jiných systémech souborů. Libovolný datový rámec nebo sada RDD.
Aktivované Automaticky při prvním čtení (pokud je povolená mezipaměť). Ručně vyžaduje změny kódu.
Vyhodnocena Líně. Líně.
Dostupnost U některých typů uzlů je možné povolit nebo zakázat příznaky konfigurace, které jsou ve výchozím nastavení povolené. Vždy k dispozici.
Odstraněn Automatická změna LRU nebo při jakékoli změně souboru ručně při restartování clusteru. Automaticky v LRU módě, ručně s unpersist.

Konzistence mezipaměti disku

Mezipaměť disku automaticky rozpozná, kdy se datové soubory vytvoří, odstraní, upraví nebo přepíšou a odpovídajícím způsobem aktualizují jeho obsah. Data tabulky můžete zapisovat, upravovat a odstraňovat bez nutnosti explicitně zneplatňovat data uložená v mezipaměti. Všechny zastaralé položky se automaticky zneplatní a vyřadí se z mezipaměti.

Výběr typů instancí pro použití ukládání do mezipaměti na disku

Doporučeným (a nejsnadnějším) způsobem použití ukládání do mezipaměti na disku je zvolit typ pracovního procesu se svazky SSD při konfiguraci clusteru. Tyto pracovní procesy jsou povolené a nakonfigurované pro ukládání do mezipaměti na disku.

Mezipaměť disku je nakonfigurovaná tak, aby používala nejvýše polovinu místa dostupného na místních discích SSD poskytovaných pracovními uzly. Možnosti konfigurace najdete v tématu Konfigurace mezipaměti disku.

Konfigurace mezipaměti disku

Azure Databricks doporučuje zvolit pro clustery typy instancí akcelerovaných pracovních procesů akcelerované mezipamětí. Takové instance jsou pro mezipaměť disku automaticky nakonfigurované optimálně.

Poznámka:

Když dojde k vyřazení pracovního procesu z provozu, dojde ke ztrátě mezipaměti Sparku uložené na daném pracovním procesu. Takže pokud je povolené automatické škálování, je s mezipamětí nějaká nestabilita. Spark by pak musel podle potřeby znovu načíst chybějící oddíly ze zdroje.

Konfigurace využití disku

Pokud chcete nakonfigurovat způsob, jakým mezipaměť disku používá místní úložiště pracovních uzlů, zadejte při vytváření clusteru následující nastavení konfigurace Sparku:

  • spark.databricks.io.cache.maxDiskUsage: Místo na disku na uzel vyhrazené pro data uložená v mezipaměti v bajtech
  • spark.databricks.io.cache.maxMetaDataCache: Místo na disku na uzel vyhrazené pro metadata uložená v mezipaměti v bajtech
  • spark.databricks.io.cache.compression.enabled: Pokud by se data uložená v mezipaměti ukládaly v komprimovaném formátu.

Příklad konfigurace:

spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false

Povolení nebo zakázání mezipaměti disku

Pokud chcete povolit a zakázat mezipaměť disku, spusťte:

spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")

Zakázáním mezipaměti nedojde k vyřazení dat, která už jsou v místním úložišti. Místo toho zabrání dotazům přidávat nová data do mezipaměti a číst data z mezipaměti.