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

Čtení dat z cloudového objektového úložiště je pomalejší než čtení z lokálního disku. Bez cacheování dotazy a notebooky, které opakovaně čtou stejné datové soubory Parquet, je pokaždé načítají z cloudového objektového úložiště.

Azure Databricks používá diskovou cache k urychlení čtení dat. Když uzel načte datový soubor Parquet z vzdáleného úložiště, automaticky uloží kopii na své lokální úložiště v rychlém mezilehlém formátu. Pozdější načtení stejných dat probíhá lokálně a je výrazně rychlejší. Cache funguje pro všechny datové soubory Parquet, včetně tabulek Delta Lake.

Poznámka

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

Doporučené postupy

Disková cache nejvíce pomáhá při pracovních zátěžích, které čtou stejná data mnohokrát, například opakované nebo iterativní dotazy na stejné tabulky. Azure Databricks tuto funkci automaticky umožňuje u typů instancí pracovních uzlů, které ji podporují. Chcete-li pomocí diskové cache zrychlit čtení, postupujte podle těchto postupů:

Rozdílová mezipaměť byla přejmenována na diskovou mezipaměť

Disková mezipaměť v Azure Databricks se dříve označovala 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 je součástí protokolu Delta Lake.

Porovnejte diskovou cache a Spark cache

Mezipaměť disků Azure Databricks se liší od ukládání do mezipaměti Apache Spark. 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 Spark
Uloženo jako Místní soubory na výpočetním uzlu Jsou to bloky v paměti, ale záleží na úrovni úložiště.
Aplikováno na Libovolná tabulka Parquet uložená v ABFS a jiných systémech souborů. Libovolný DataFrame nebo RDD.
Spuštěno Automaticky při prvním čtení (pokud je povolená mezipaměť). Ručně, vyžaduje změny kódu.
Vyhodnocený Líně. Líně.
Dostupnost Ve výchozím nastavení je zapnuto na určitých typech uzlů. Povolíte nebo zakážete to pomocí konfiguračních příznaků. Vždy k dispozici.
Vyřazen Automaticky způsobem 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 diskové mezipaměti

Mezipaměť disku automaticky rozpozná, kdy se datové soubory vytvoří, odstraní, upraví nebo přepíšou, a podle toho aktualizuje svůj 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í diskové mezipaměti

Doporučeným (a nejsnadnějším) způsobem použití ukládání do mezipaměti na disku je zvolit typ pracovní stanice se svazky SSD při konfiguraci clusteru. Tito pracovníci jsou povoleni a nakonfigurováni 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 s pracovními uzly. Možnosti konfigurace najdete v tématu Konfigurace diskové mezipaměti.

Nakonfigurujte mezipaměť disku

Databricks doporučuje zvolit pro výpočetní účely typy worker instancí akcelerované cache. Takové instance jsou pro mezipaměť disku automaticky nakonfigurované optimálně.

Poznámka

Když dojde k vyřazení pracovního uzlu z provozu, dojde ke ztrátě mezipaměti Sparku uložené na daném pracovním uzlu. 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.

Nastavit využití disku

Pro konfiguraci, jak disková cache využívá lokální úložiště pracovních uzlů, zadejte tato nastavení konfigurace Spark při vytváření clusteru:

  • 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: zda mají být data v mezipaměti uložena 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

Povolte nebo zakažte mezipaměť disku

Pro zobrazení aktuálního nastavení diskové cache spusťte:

spark.conf.get("spark.databricks.io.cache.enabled")

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 brání přidávání nových dat do mezipaměti prostřednictvím dotazů a čtení dat z mezipaměti prostřednictvím dotazů.