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. |
Vyhodnocený | 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. |
Vypudil | 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 typy instancí pracovních procesů akcelerované mezipamětí pro výpočetní prostředky. 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 bajtechspark.databricks.io.cache.maxMetaDataCache
: Místo na disku na uzel vyhrazené pro metadata uložená v mezipaměti v bajtechspark.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.