Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft объявила устаревшим драйвер BLOB-объектов службы хранилища Windows Azure (WASB) для хранилища BLOB-объектов Azure в пользу драйвера файловой системы Azure BLOB (ABFS); см. Подключение к Azure Data Lake Storage и Хранилище BLOB-объектов Azure. ABFS имеет множество преимуществ по сравнению с WASB. См. документацию Azure по ABFS.
В этой статье содержится документация по поддержке кода, использующего драйвер WASB. Databricks рекомендует использовать ABFS для всех подключений к Хранилищу BLOB-объектов Azure.
Настройка учетных данных WASB в Databricks
Драйвер WASB позволяет использовать ключ доступа к учетной записи хранения или общий ключ доступа (SAS). (При чтении данных из общедоступной учетной записи хранения не нужно настраивать учетные данные).
Databricks рекомендует использовать секреты во всех ситуациях, когда необходимо передать учетные данные в Azure Databricks. Секреты доступны всем пользователям, у которых есть доступ к секретной области.
Вы можете передавать учетные данные:
- Ограничено кластером в настройках Spark.
- в области действия записной книжки;
- Присоединен к смонтированному каталогу.
Databricks рекомендует обновить все подключения, чтобы использовать ABFS для доступа к Хранилищу BLOB-объектов Azure. При этом шаблоны доступа будут аналогичны WASB. ABFS обеспечивает оптимальный уровень безопасности и производительности при взаимодействии с Хранилищем BLOB-объектов Azure.
Чтобы настроить учетные данные кластера, задайте свойства конфигурации Spark при создании кластера. Учетные данные, заданные на уровне кластера, могут использовать все пользователи, у которых есть доступ к кластеру.
Чтобы настроить учетные данные для записной книжки, используйте spark.conf.set(). Учетные данные, переданные на уровне записной книжки, могут использовать все пользователи, у которых есть доступ к записной книжке.
Настройка учетных данных Хранилища BLOB-объектов Azure с помощью ключа доступа к учетной записи хранения
Ключ доступа к учетной записи хранения предоставляет полный доступ ко всем контейнерам в учетной записи хранения. Хотя этот шаблон полезен для создания прототипов, не используйте его в рабочей среде, чтобы снизить риски, связанные с предоставлением неограниченного доступа к рабочим данным.
spark.conf.set(
"fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
"<storage-account-access-key>"
)
Вы можете обновить URI ключа учетной записи для использования ABFS. Дополнительные сведения см. в разделе Connect к Azure Data Lake Storage и хранилищу BLOB-объектов.
Настройка учетных данных для Blob-хранилища Azure с использованием подписанной общей ссылки (SAS)
С помощью маркеров SAS можно настроить ограниченный доступ к одному контейнеру в учетной записи хранения, срок действия которого истекает в определенное время.
spark.conf.set(
"fs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net",
"<sas-token-for-container>"
)
Доступ к хранилищу BLOB-объектов Azure с использованием API DataFrame
API DataFrame в Apache Spark может использовать учетные данные, сконфигурированные на уровне записной книжки или кластера. Во всех URI драйвера WASB указаны имена контейнеров и учетных записей хранения. Имя каталога является необязательным. В нем может быть указано несколько вложенных каталогов относительно контейнера.
wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>
В следующих примерах кода показано, как использовать API DataFrames и служебные программы Databricks (dbutils) для взаимодействия с именованным каталогом в контейнере.
df = spark.read.format("parquet").load("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")
dbutils.fs.ls("wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>")
Чтобы обновить ABFS вместо WASB, измените URI. Дополнительные сведения см. в шаге 4. Доступ к хранилищу Azure
Доступ к Blob-хранилищу Azure с помощью SQL
Учетные данные, заданные в конфигурации сеанса записной книжки, недоступны для записных книжек под управлением Spark SQL.
После настройки ключа доступа к учетной записи или SAS в конфигурации кластера можно использовать стандартные запросы Spark SQL с Хранилищем BLOB-объектов Azure:
-- SQL
CREATE DATABASE <db-name>
LOCATION "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/";
Чтобы обновить ABFS вместо WASB, обновите URI; См. шаг 4. Доступ к хранилищу Azure
Подключение контейнеров Хранилища BLOB-объектов Azure к DBFS
Контейнер Хранилища BLOB-объектов Azure или папку внутри контейнера можно подключить к DBFS. Рекомендации по Databricks см. в статье Подключение облачного хранилища объектов в Azure Databricks.
Внимание
- Хранилище BLOB-объектов Azure поддерживает три типа BLOB-объектов: блочные, добавочные и страничные. Вы можете подключать блочные BLOB-объекты только к DBFS.
- Все пользователи имеют доступ на чтение и запись к объектам в контейнерах объектов BLOB, подключенных к DBFS.
- После создания точки подключения с помощью кластера пользователи такого кластера смогут немедленно получить доступ к точке подключения. Чтобы использовать точку подключения в другом работающем кластере, необходимо в этом работающем кластере выполнить
dbutils.fs.refreshMounts(), чтобы сделать созданную точку подключения доступной.
В DBFS используются учетные данные, которые вы предоставляете при создании точки подключения, чтобы получить доступ к подключенному контейнеру хранилища BLOB-объектов. Если контейнер хранилища BLOB-объектов подключен с помощью ключа доступа к учетной записи хранения, в DBFS используются временные маркеры SAS, полученные из ключа учетной записи хранения при получении доступа к этой точке подключения.
Подключение контейнера хранилища BLOB-объектов Azure
Databricks рекомендует использовать ABFS вместо WASB. Дополнительную информацию о монтировании с помощью ABFS см. в разделе Монтирование ADLS или хранилища BLOB-объектов с помощью ABFS.
Чтобы подключить контейнер хранилища BLOB-объектов или папку внутри контейнера, используйте следующую команду:
Питон
dbutils.fs.mount( source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net", mount_point = "/mnt/<mount-name>", extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})язык программирования Scala
dbutils.fs.mount( source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>", mountPoint = "/mnt/<mount-name>", extraConfigs = Map("<conf-key>" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")))где
-
<storage-account-name>— это имя учетной записи хранилища BLOB-объектов Azure. -
<container-name>— это имя контейнера в учетной записи хранилища BLOB-объектов Azure. -
<mount-name>— это путь DBFS, представляющий, где контейнер хранилища BLOB-объектов или папка внутри контейнера, указанная вsource, будет монтироваться в DBFS. -
<conf-key>может быть либоfs.azure.account.key.<storage-account-name>.blob.core.windows.net, либоfs.azure.sas.<container-name>.<storage-account-name>.blob.core.windows.net -
dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")получает ключ, сохраненный в качестве секрета в секретной области.
-
Доступ к файлам в контейнере осуществляется так же, как к локальным файлам, например:
Питон
# python df = spark.read.format("text").load("/mnt/<mount-name>/...") df = spark.read.format("text").load("dbfs:/<mount-name>/...")язык программирования Scala
// scala val df = spark.read.format("text").load("/mnt/<mount-name>/...") val df = spark.read.format("text").load("dbfs:/<mount-name>/...")SQL
-- SQL CREATE DATABASE <db-name> LOCATION "/mnt/<mount-name>"