Sdílet prostřednictvím


Inteligentní mezipaměť ve službě Azure Synapse Analytics

Inteligentní mezipaměť funguje bezproblémově na pozadí a ukládá data do mezipaměti, aby urychlila spouštění Sparku při čtení z datového jezera ADLS Gen2. Také automaticky rozpozná změny podkladových souborů a automaticky aktualizuje soubory v mezipaměti, poskytuje nejnovější data a jakmile velikost mezipaměti dosáhne limitu, mezipaměť automaticky uvolní data s nejmenším čtením, aby se místo pro novější data uvolnilo. Tato funkce snižuje celkové náklady na vlastnictví zvýšením výkonu až o 65 % při následných čteních souborů uložených v dostupné mezipaměti souborů Parquet a 50 % u souborů CSV.

Při dotazování souboru nebo tabulky z datového jezera modul Apache Spark ve službě Synapse zavolá vzdálené úložiště ADLS Gen2 ke čtení podkladových souborů. Při každém požadavku na dotazy ke čtení stejných dat musí modul Spark volat vzdálené úložiště ADLS Gen2. Tento redundantní proces přidává latenci k celkové době zpracování. Spark poskytuje funkci ukládání do mezipaměti, kterou musíte ručně nastavit a uvolnit mezipaměť, aby se minimalizovala latence a zlepšil celkový výkon. To ale může způsobit zastaralá data, pokud se podkladová data změní.

Inteligentní mezipaměť Synapse zjednodušuje tento proces tím, že automaticky ukládá každé čtení do přiděleného prostoru úložiště mezipaměti na každém uzlu Sparku. Každý požadavek na soubor zkontroluje, jestli soubor existuje v mezipaměti, a porovná značku ze vzdáleného úložiště a určí, jestli je soubor zastaralý. Pokud soubor neexistuje nebo pokud je soubor zastaralý, Spark ho přečte a uloží ho do mezipaměti. Když se mezipaměť zaplní, soubor s nejstarším časem posledního přístupu se z mezipaměti vyřadí, aby se povolily novější soubory.

Mezipaměť Synapse je jedna mezipaměť na uzel. Pokud používáte uzel střední velikosti a spouštíte se dvěma malými exekutory na jednom uzlu střední velikosti, tyto dva exekutory by sdílely stejnou mezipaměť.

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

Velikost mezipaměti se dá upravit na základě procenta celkové velikosti disku dostupné pro každý fond Apache Spark. Mezipaměť je ve výchozím nastavení zakázaná, ale je stejně snadná jako přesunutí posuvníku z 0 (zakázáno) na požadované procento velikosti mezipaměti, aby se povolila. Pro náhodné prohazování dat si vyhrazujeme minimálně 20 % volného místa na disku. U úloh náročných na náhodné shuffle můžete minimalizovat velikost mezipaměti nebo zakázat mezipaměť. Doporučujeme začít s 50% velikostí mezipaměti a podle potřeby ji upravit. Je důležité si uvědomit, že pokud vaše úloha vyžaduje hodně místa na disku na místním disku SSD pro náhodné prohazování nebo ukládání do mezipaměti RDD, zvažte snížení velikosti mezipaměti, aby se snížila pravděpodobnost selhání kvůli nedostatečnému úložišti. Skutečná velikost dostupného úložiště a velikosti mezipaměti na každém uzlu bude záviset na rodině uzlů a velikosti uzlu.

Povolení mezipaměti pro nové fondy Sparku

Při vytváření nového fondu Sparku přejděte na další kartu nastavení a najděte posuvník inteligentní mezipaměti, který vám umožní tuto funkci povolit.

How to enable Intelligent Cache during new Spark pools creation

Povolení nebo zakázání mezipaměti pro existující fondy Sparku

U stávajících fondů Sparku přejděte do nastavení škálování zvoleného fondu Apache Spark, který chcete povolit, přesunutím posuvníku na hodnotu větší než 0 nebo ho zakažte přesunutím posuvníku na hodnotu 0.

How to enable or disable Intelligent Cache for existing Spark pools

Změna velikosti mezipaměti pro existující fondy Sparku

Pokud chcete změnit velikost inteligentní mezipaměti fondu, musíte vynutit restartování, pokud má fond aktivní relace. Pokud má fond Sparku aktivní relaci, zobrazí se vynutit nová nastavení. Klikněte na zaškrtávací políčko a zaškrtněte políčko Použít k automatickému restartování relace.

Force restarting a session after changing Intelligent Cache setting

Povolení a zakázání mezipaměti v rámci relace

Snadno zakažte inteligentní mezipaměť v rámci relace spuštěním následujícího kódu v poznámkovém bloku:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "false") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'false') 

A povolte ho spuštěním:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "true") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'true') 

Kdy použít inteligentní mezipaměť a kdy ne?

Tato funkce vám bude výhodou v těchto případech:

  • Vaše úloha vyžaduje vícekrát čtení stejného souboru a velikost souboru se může vejít do mezipaměti.

  • Vaše úloha používá tabulky Delta, formáty souborů parquet a soubory CSV.

  • V Azure Synapse používáte Apache Spark 3 nebo vyšší.

Výhody této funkce neuvidíte, pokud:

  • Čtete soubor, který překračuje velikost mezipaměti, protože začátek souborů by mohl být vyřazen a následné dotazy budou muset načíst data ze vzdáleného úložiště. V takovém případě neuvidíte žádné výhody z inteligentní mezipaměti a možná budete chtít zvětšit velikost mezipaměti nebo velikost uzlu.

  • Vaše úloha vyžaduje velké množství náhodného prohazování a zakázání inteligentní mezipaměti uvolní dostupné místo, aby se zabránilo selhání vaší úlohy kvůli nedostatku místa v úložišti.

  • Používáte fond Spark 3.1, musíte fond upgradovat na nejnovější verzi Sparku.

Další informace

Další informace o Apache Sparku najdete v následujících článcích:

Informace o konfiguraci nastavení relace Sparku

Další kroky

Fond Apache Spark poskytuje opensourcové výpočetní funkce pro velké objemy dat, ve kterých je možné načítat, modelovat, zpracovávat a distribuovat, aby bylo možné rychleji analytické přehledy. Další informace o tom, jak vytvořit úlohy Sparku, najdete v následujících kurzech: