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

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

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

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

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

Принцип работы

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

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

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

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

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

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

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

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

Настройка интеллектуального кэша

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

SET spark.synapse.vegas.useCache = TRUE

Процент дискового пространства, который может использовать интеллектуальный кэш, по умолчанию составляет 50%:

SET spark.synapse.vegas.cacheSize = 50