Где azure Databricks записывает данные?

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

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

Сведения о настройке хранилища объектов и других источников данных см. в статье "Подключение к источникам данных".

Что такое хранилище объектов?

В облачных вычислениях хранилище объектов или хранилище BLOB-объектов относится к контейнерам хранилища, которые хранят данные как объекты, с каждым объектом, состоящим из данных, метаданных и глобально уникальным идентификатором ресурса (URI). Операции обработки данных хранилища объектов часто ограничиваются созданием, чтением, обновлением и удалением (CRUD) через интерфейс REST API. Некоторые предложения хранилища объектов включают такие функции, как управление версиями и жизненным циклом. Хранилище объектов имеет следующие преимущества:

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

Большинство облачных озер данных основаны на открытый код форматах данных в облачном хранилище объектов.

Как Azure Databricks использует хранилище объектов?

Хранилище объектов — это основная форма хранения, используемая Azure Databricks для большинства операций. Вы настраиваете доступ к облачному хранилищу объектов с помощью учетных данных хранилища каталога Unity и внешних расположений. Затем эти расположения используются для хранения файлов данных резервных таблиц и томов. См. статью "Подключение к облачному хранилищу объектов и службам с помощью каталога Unity".

Если таблица не настроена для внешней системы данных, все таблицы, созданные в Azure Databricks, хранят данные в облачном хранилище объектов.

Файлы Delta Lake, хранящиеся в облачном хранилище объектов, предоставляют основу данных для Databricks lakehouse.

Что такое хранилище блоков?

В облачных вычислениях блочное хранилище или хранилище дисков относится к томам хранилища, которые соответствуют традиционным жестким дискам (HDD) или твердотельным дискам (SSD), также называемым "жесткими дисками". При развертывании блочного хранилища в облачной вычислительной среде логический раздел одного или нескольких физических дисков обычно развертывается. Реализации немного различаются между предложениями продуктов и поставщиками облачных решений, но следующие характеристики обычно находятся в различных реализациях:

  • Для всех виртуальных машин (виртуальных машин) требуется подключенный том блочного хранилища.
  • Файлы и программы, установленные в том блочного хранилища, сохраняются до тех пор, пока сохраняется том блочного хранилища.
  • Тома блочного хранилища часто используются для временного хранилища данных.
  • Блочные тома хранилища, подключенные к виртуальным машинам, обычно удаляются вместе с виртуальными машинами.

Как Azure Databricks использует хранилище блоков?

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

Вы можете выполнить произвольный код, например команды Python или Bash, использующие хранилище блоков, подключенное к узлу драйвера. См. статью " Работа с файлами в эфемерном хранилище, подключенном к узлу драйвера".

Где каталог Unity хранит файлы данных?

Каталог Unity использует администраторов для настройки связей между облачным хранилищем и реляционными объектами. Точное расположение, в котором находятся данные, зависит от того, как администраторы настроили отношения.

Данные, записанные или отправленные в объекты, управляемые каталогом Unity, хранятся в одном из следующих расположений:

Где Databricks SQL хранит резервные таблицы данных?

При запуске инструкции с databricks SQL, настроенной CREATE TABLE с помощью каталога Unity, поведение по умолчанию — хранить файлы данных в управляемом расположении хранилища, настроенном с помощью каталога Unity. См. раздел " Где каталог Unity хранит файлы данных?".

Каталог прежних версий hive_metastore следует разным правилам. См. статью " Работа с каталогом Unity" и устаревшим хранилищем метаданных Hive.

Где разностные динамические таблицы хранят файлы данных?

Databricks рекомендует использовать каталог Unity при создании конвейеров DLT. Данные хранятся в каталогах в расположении управляемого хранилища, связанном с целевой схемой.

При необходимости можно настроить конвейеры DLT с помощью хранилища метаданных Hive. При настройке хранилища метаданных Hive можно указать расположение хранилища в DBFS или облачном хранилище объектов. Если расположение не указано, то для конвейера назначается расположение в корневом каталоге DBFS.

Где Apache Spark записывает файлы данных?

Databricks рекомендует использовать имена объектов с каталогом Unity для чтения и записи данных. Вы также можете записывать файлы в тома каталога Unity с помощью следующего шаблона: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name> Необходимо иметь достаточные привилегии для отправки, создания, обновления или вставки данных в объекты, управляемые каталогом Unity.

При необходимости можно использовать универсальные индикаторы ресурсов (URI), чтобы указать пути к файлам данных. URI зависят от поставщика облачных служб. Необходимо также иметь разрешения на запись, настроенные для текущего вычислительного ресурса для записи в облачное хранилище объектов.

Azure Databricks использует файловую систему Databricks для сопоставления команд Apache Spark с чтением и записью обратно в облачное хранилище объектов. Каждая рабочая область Azure Databricks имеет расположение корневого хранилища DBFS, настроенное в облачной учетной записи, выделенной для рабочей области, доступ ко всем пользователям для чтения и записи данных. Databricks не рекомендует использовать корневой каталог DBFS для хранения любых рабочих данных. См. сведения о том, что такое DBFS? и рекомендации по работе с корнем DBFS.

Где pandas записывает файлы данных в Azure Databricks?

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

Не все версии среды выполнения Databricks поддерживают файлы рабочей области, а некоторые версии среды выполнения Databricks отличаются в зависимости от того, используются ли записные книжки или папки Git. См. раздел " Что такое текущий рабочий каталог по умолчанию?".

Где следует записывать временные файлы в Azure Databricks?

Если вы не хотите сохранять временные файлы после завершения работы кластера, запись временных файлов $TEMPDIR для повышения производительности, чем запись в текущий рабочий каталог (CWD), если CWD находится в файловой системе рабочей области. Кроме того, можно избежать превышения ограничений размера ветви, если код выполняется в репозитории. Дополнительные сведения см. в разделе "Ограничения файлов и репозитория".

/local_disk0 Запись в том случае, если объем записываемых данных велик и требуется, чтобы хранилище было автомасштабированием.