Кэш результатов блоков данных - PullRequest
0 голосов
/ 17 октября 2019

Имеет ли Databricks концепцию кэша результатов? Когда я запускаю SQL-запрос, он где-то кэширует набор результатов для доступа менее чем за секунду или у нас только кэш Delta lake? Я не смог найти ничего в документации, и на данном этапе я предполагаю, что это не существует как функция. Может кто-нибудь уточнить?

1 Ответ

0 голосов
/ 22 октября 2019

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

Примеры:

CACHE SELECT * FROM boxes
CACHE SELECT width, length FROM boxes WHERE height=3

Ссылка: См. Сравнение Delta и Apache Spark для различий между кешем RDD и кешем ввода-вывода Databricks.

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

Существует два типа кэширования, доступных в блоках данных:

  • Дельта-кэширование

  • Кэширование Apache Spark

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

Тип хранимых данных: Кэш Delta содержит локальные копии удаленных данных. Это может улучшить производительность широкого диапазона запросов, но не может использоваться для хранения результатов произвольных подзапросов. Кэш Spark может хранить результаты любых данных подзапроса и данные, хранящиеся в форматах, отличных от Parquet (например, CSV, JSON и ORC).

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

Автоматическое или ручное управление: Когда дельта-кэш включенДанные, которые должны быть извлечены из удаленного источника, автоматически добавляются в кэш. Этот процесс полностью прозрачен и не требует каких-либо действий. Однако для предварительной загрузки данных в кэш можно использовать команду CACHE (см. Кэширование подмножества данных). При использовании кеша Spark необходимо вручную указывать таблицы и запросы для кеширования.

Диск по сравнению с памятью: Дельта-кэш полностью хранится на локальном диске, так что памятьне отнимается от других операций в Spark. Из-за высокой скорости чтения современных твердотельных накопителей Delta-кеш может быть полностью дисковым без негативного влияния на его производительность. Напротив, кэш Spark использует память.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...