Поделиться через


Интеллектуальный кэш в Microsoft Fabric

Функция интеллектуального кэша легко работает за кулисами и кэширует данные, чтобы ускорить выполнение заданий Apache Spark в Microsoft Fabric по мере чтения из хранилища OneLake или Azure Data Lake служба хранилища(ADLS) 2-го поколения с помощью сочетаний клавиш. Он также автоматически обнаруживает изменения базовых файлов и автоматически обновляет файлы в кэше, предоставляя последние данные. Когда размер кэша достигает его предела, кэш автоматически освобождает наименьшие данные чтения, чтобы освободить место для более поздних данных. Эта функция снижает общую стоимость владения, повышая производительность до 60 % при последующих считываниях файлов, хранящихся в доступном кэше.

Когда модуль Apache Spark в Microsoft Fabric запрашивает файл или таблицу из lakehouse, он вызывает удаленное хранилище для чтения базовых файлов. При каждом запросе на чтение одних и того же данных обработчик Spark должен каждый раз вызывать удаленное хранилище. Этот избыточный процесс добавляет задержку к общему времени обработки. Spark имеет требование кэширования, которое необходимо вручную задать и освободить кэш, чтобы свести к минимуму задержку и повысить общую производительность. Однако это требование может привести к устаревшим данным, если базовые данные изменяются.

Интеллектуальный кэш упрощает процесс путем автоматического кэширования каждого чтения в выделенном хранилище кэша на каждом узле Spark, где файлы данных кэшируются в SSD. Каждый запрос на проверка файла, чтобы узнать, существует ли файл в локальном кэше узлов и сравнить тег из удаленного хранилища, чтобы определить, является ли файл устаревшим. Если файл не существует или если файл устарел, Spark считывает файл и сохраняет его в кэше. Когда кэш становится полным, файл с самым старым временем последнего доступа вытеснен из кэша, чтобы разрешить более поздние файлы.

Интеллектуальный кэш — это один кэш на узел. Если вы используете узел среднего размера и запускаете с двумя небольшими исполнителями на этом одном узле, два исполнителя используют один и тот же кэш. Кроме того, кэширование на уровне файлов данных позволяет нескольким запросам использовать один кэш, если они получают доступ к одинаковым файлам данных или файлам данных.

Как это работает

В Microsoft Fabric (среда выполнения 1.1 и 1.2) интеллектуальная кэширование включена по умолчанию для всех пулов Spark для всех рабочих областей с размером кэша с размером 50 %. Фактический размер доступного хранилища и размера кэша на каждом узле зависит от семейства узлов и размера узлов.

Когда следует использовать интеллектуальный кэш

Эта функция обеспечивает следующие преимущества:

  • Для рабочей нагрузки требуется несколько раз считывать один и тот же файл, а размер файла помещается в кэш.

  • В рабочей нагрузке используются таблицы Delta Lake, форматы Parquet или CSV-файла.

Если вы не видите преимущества интеллектуального кэша, если:

  • Вы считываете файл, превышающий размер кэша. Если это так, то начало файлов может быть вытесняется, а последующие запросы должны перенаправлять данные из удаленного хранилища. В этом случае вы не видите никаких преимуществ интеллектуального кэша, и вы можете увеличить размер кэша и (или) размер узла.

  • Для рабочей нагрузки требуется большое количество перетасовок. Отключение интеллектуального кэша освобождает доступное пространство, чтобы предотвратить сбой задания из-за нехватки места в хранилище.

Включение и отключение интеллектуального кэша

Вы можете отключить или включить интеллектуальный кэш в сеансе, выполнив следующий код в записной книжке или задав эту конфигурацию на уровне рабочей области или элемента среды .

spark.conf.set("spark.synapse.vegas.useCache", "false/true")