Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтение данных из облачного объектного хранилища происходит медленнее, чем чтение с локального диска. Без кэширования запросы и блокноты, считывающие одни и те же файлы данных Parquet, постоянно забирают их из облачного объектного хранилища каждый раз.
Azure Databricks использует кэширование дисков для ускорения чтения данных. Когда узел получает файл данных Parquet из удалённого хранилища, он автоматически сохраняет копию на своём локальном хранилище в быстром промежуточном формате. Последующие чтения тех же данных выполняются локально и значительно быстрее. Кэш работает для всех файлов данных Parquet, включая таблицы Delta Lake.
Примечание
В хранилищах SQL и Databricks Runtime версии 14.2 и более поздних версиях команда CACHE SELECT игнорируется. Вместо этого используется улучшенный алгоритм кэширования дисков.
Лучшие практики
Кэш диска больше всего помогает с рабочими нагрузками, которые читают одни и те же данные многократно, например, повторяющиеся или итеративные запросы к одним и тем же таблицам. Azure Databricks автоматически включает её на типах рабочих экземпляров, которые поддерживают её. Чтобы помочь кэшу диска ускорить чтение, следуйте следующим практикам:
- Выберите тип экземпляра рабочего узла, поддерживающий кэширование дисков. См. Выбор типов экземпляров для кэширования дисков.
- Используйте кэш диска вместо кэша Apache Spark для повторных чтений данных Parquet и Delta Lake. См. Сравните кэш диска и кэш Spark.
Дельта-кэш переименован в кэш диска
Кэширование дисков в Azure Databricks ранее называлось кэшем Delta и кэшем DBIO. Поведение кэширования дисков является фирменной возможностью Azure Databricks. Это переименование призвано устранить путаницу, из-за которой его ошибочно считали частью протокола Delta Lake.
Сравните кэш диска и кэш Spark
Кеш дисков Azure Databricks отличается от кеширования Apache Spark. Databricks рекомендует использовать автоматическое кэширование диска.
В следующей таблице описаны основные различия между дисковым кешированием и кешированием Apache Spark, чтобы вы могли выбрать оптимальное средство для своего рабочего процесса:
| Функция | Кэш диска | Кэш Apache Spark |
|---|---|---|
| Сохранено как | Локальные файлы в рабочем узле. | Блоки в памяти, но это зависит от уровня хранилища. |
| Применено к | Любая таблица Parquet, хранящаяся в ABFS и других файловых системах. | Любой DataFrame или RDD. |
| Сработало | Автоматически при первом чтении (если включено кэширование). | Вручную: требуется изменение кода. |
| Оценено | Лениво. | Лениво. |
| Доступность | Включено по умолчанию на некоторых типах узлов. Вы включаете или отключаете его с помощью флагов настройки. | Доступна всегда. |
| Вытеснен | Автоматически в режиме LRU или при любом изменении файла, вручную при перезапуске кластера. | Автоматически в режиме LRU, вручную с использованием unpersist. |
В бессерверных вычислениях df.cache() работает иначе, чем кэш Apache Spark в этой таблице. См. Cache DataFrames на бессерверных вычислениях.
Согласованность дискового кэша
Кеш диска автоматически определяет, когда файлы данных создаются, изменяются, перезаписываются или удаляются, и соответствующим образом обновляет содержимое кеша. Данные таблицы можно записывать, изменять и удалять без необходимости явно инвалидировать данные в кэше. Все устаревшие записи автоматически признаются недействительными и удаляются из кэша.
Выбор типов экземпляров с кэшированием на диске
Рекомендуемым (и самым простым) способом использования кеширования диска является выбор типа рабочего узла с объемами твердотельных накопителей при настройке кластера. Такие рабочие узлы включены и настроены для кеширования диска.
Кеш диска настроен для использования не более половины пространства, доступного на локальных твердотельных накопителях, поставляемых вместе с рабочими узлами. Сведения о параметрах конфигурации см. Настройка дискового кэша.
Настройте кэш диска
Databricks рекомендует выбирать типы экземпляров worker с ускорением кэша для ваших вычислительных ресурсов. Такие экземпляры автоматически настраиваются оптимальным образом для дискового кэша.
Примечание
Когда рабочий узел выводится из эксплуатации, кэш Spark, хранящийся на этом рабочем узле, теряется. Таким образом, если автомасштабирование включено, с кэшем возникает некоторая нестабильность. Затем Spark потребуется повторно считать отсутствующие партиции из источника по мере необходимости.
Настроить использование диска
Чтобы настроить, как кэш диска использует локальное хранилище рабочих узлов, при создании кластера задайте следующие настройки Spark :
-
spark.databricks.io.cache.maxDiskUsage: дисковое пространство на узел, зарезервированное для кэшированных данных в байтах; -
spark.databricks.io.cache.maxMetaDataCache: дисковое пространство на узел, зарезервированное для кэшированных метаданных в байтах; -
spark.databricks.io.cache.compression.enabled: следует ли хранить кэшированные данные в сжатом формате.
Пример конфигурации:
spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false
Включить или отключить кэш диска
Чтобы увидеть текущие настройки кэша диска, выполните:
spark.conf.get("spark.databricks.io.cache.enabled")
Чтобы включить и отключить кеш диска, выполните:
spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")
Отключение кэша не приводит к удалению данных, которые уже находятся в локальном хранилище. Вместо этого он не позволяет запросам добавлять новые данные в кэш и считывать данные из кэша.