Где azure Databricks записывает данные?
В этой статье описаны расположения, в которых Azure Databricks записывает данные в рамках ежедневных операций и настроек. Так как Azure Databricks имеет набор средств, охватывающих множество технологий и взаимодействующих с облачными ресурсами в модели общей ответственности, расположения по умолчанию, используемые для хранения данных, зависят от среды выполнения, конфигураций и библиотек.
Сведения в этой статье предназначены для понимания путей по умолчанию для различных операций и способа изменения конфигураций по умолчанию. Распорядители данных и администраторы данных, нуждающиеся в рекомендациях по настройке и управлению доступом к данным, должны обратиться к Управление данными с помощью Unity Catalog.
Сведения о настройке хранилища объектов и других источников данных см. в статье "Подключение к источникам данных".
Что такое хранилище объектов?
В облачных вычислениях объектное хранилище или хранилище 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, хранятся в одном из следующих расположений:
- Расположение управляемого хранилища, связанное с хранилищем метаданных, каталогом или схемой. Данные, записанные или отправленные в управляемые таблицы и управляемые тома, используют управляемое хранилище. См. раздел "Указание расположения управляемого хранилища" в каталоге Unity.
- Внешнее расположение, для которого настроены учетные данные хранения. Данные, записанные или отправленные во внешние таблицы и внешние тома, используют внешнее хранилище. См. статью "Подключение к облачному хранилищу объектов и службам с помощью каталога Unity".
Где Databricks SQL хранит резервные таблицы данных?
При запуске инструкции CREATE TABLE
с Databricks SQL, настроенной с Unity Catalog, поведение по умолчанию — это хранение файлов данных в управляемом месте хранения, настроенном с Unity Catalog. См. раздел " Где каталог Unity хранит файлы данных?".
Каталог наследия hive_metastore
следует другим правилам. См. Работа с каталогом Unity и устаревшим хранилищем метаданных Hive.
Где DLT хранит файлы данных?
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
в том случае, если объем данных, подлежащих записи, велик и вы хотите, чтобы хранилище автоматически масштабировалось.