Чтение общих данных с помощью Databricks to Databricks Delta Sharing (для получателей)

В этой статье описывается, как считывать данные, которыми вы предоставили общий доступ с помощью протокола Databricks to Databricks Delta Sharing, в котором Databricks управляет безопасным подключением для общего доступа к данным. В отличие от протокола общего доступа Delta Sharing, протокол Databricks to Databricks не требует файла учетных данных (безопасность на основе маркеров).

Для общего доступа Databricks to Databricks требуется, чтобы у вас в качестве получателя был доступ к рабочей области Databricks, которая включена для каталога Unity.

Если у вас нет рабочей области Databricks, которая включена для каталога Unity, к ним необходимо предоставить общий доступ с помощью протокола открытого общего доступа Delta Shared, и эта статья не применяется к вам. См. раздел "Чтение данных", которым предоставлен общий доступ с помощью разностного общего доступа (для получателей).

Разделы справки сделать общие данные доступными для моей команды?

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

Примечание.

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

Чтобы считывать данные, которыми вы предоставили общий доступ, выполните следующие действия.

  1. Пользователь в вашей команде находит общую папку — контейнер для таблиц, представлений, томов и записных книжек, которыми вы предоставили общий доступ, и использует этот общий ресурс для создания каталога — контейнера верхнего уровня для всех данных в каталоге Databricks Unity.
  2. Пользователь в команде предоставляет или запрещает доступ к каталогу и объектам внутри каталога (схемы, таблицы, представления и тома) другим членам вашей команды.
  3. Вы считываете данные в таблицах, представлениях и томах, к которым вы получили доступ так же, как и к любому другому ресурсу данных в Databricks, к которому у вас есть доступ только для чтения (SELECT или READ VOLUME) .
  4. Вы просматриваете и клонируете записные книжки в общей папке, если у вас есть USE CATALOG привилегии в каталоге.

Необходимые разрешения

Чтобы иметь возможность отображать и просматривать сведения обо всех поставщиках и общих ресурсах поставщика, необходимо быть администратором хранилища метаданных или иметь привилегии USE PROVIDER . Другие пользователи имеют доступ только к поставщикам и общим папкам, которыми они владеет.

Чтобы создать каталог из общей папки поставщика, необходимо быть администратором хранилища метаданных, пользователем, у которого есть и права для хранилища метаданных каталога Unity, или пользовательCREATE_CATALOG, имеющий как привилегии, так CREATE_CATALOG и USE PROVIDER права владения объектом поставщика.

Возможность предоставлять доступ только для чтения к схемам (базам данных), таблицам, представлениям и томам в каталоге, созданному из общей папки, следует типичной иерархии привилегий каталога Unity. Возможность просмотра записных книжек в каталоге, созданном из общей папки, требует USE CATALOG привилегии в каталоге. См. раздел "Управление разрешениями" для схем, таблиц и томов в каталоге delta Sharing.

Просмотр поставщиков и общих папок

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

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

Объект общей папки представляет таблицы, тома и представления, к которым поставщик предоставил вам общий доступ.

Просмотр всех поставщиков, которым предоставлен общий доступ к данным

Чтобы просмотреть список доступных поставщиков данных, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или SHOW PROVIDERS команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: вы должны быть администратором хранилища метаданных или иметь USE PROVIDER права. Другие пользователи имеют доступ только к поставщикам и общим папкам поставщика, которыми они владеет.

Дополнительные сведения см. в разделе "Просмотр поставщиков".

Просмотр сведений о поставщике

Чтобы просмотреть сведения о поставщике, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или DESCRIBE PROVIDER команду SQL в записной книжке Azure Databricks или редакторе запросов SQL Databricks.

Необходимые разрешения: вы должны быть администратором хранилища метаданных, иметь USE PROVIDER привилегии или принадлежать объекту поставщика.

Дополнительные сведения см. в разделе "Просмотр сведений о поставщике".

Просмотр общих папок

Чтобы просмотреть общие папки, к которым предоставлен общий доступ поставщику, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или SHOW SHARES IN PROVIDER команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: вы должны быть администратором хранилища метаданных, иметь USE PROVIDER привилегии или принадлежать объекту поставщика.

Дополнительные сведения см. в разделе "Просмотр общих папок", к которым предоставлен общий доступ поставщику.

Доступ к данным в общей таблице или томе

Для чтения данных в общей таблице или томе:

  1. Привилегированный пользователь должен создать каталог из общей папки, содержащей таблицу или том. Это может быть администратор хранилища метаданных, пользователь, имеющий как права, так и привилегии для хранилища метаданных каталога Unity, или пользователь, имеющий CREATE_CATALOG как привилегию, так CREATE_CATALOG и USE PROVIDER владение объектом поставщика.
  2. Этот пользователь или пользователь с теми же привилегиями должен предоставить вам доступ к общей таблице или тому.
  3. Вы можете получить доступ к таблице или тому так же, как и любой другой ресурс данных, зарегистрированный в хранилище метаданных каталога Unity.

Создание каталога из общей папки

Чтобы сделать данные в общей папке доступными для вашей команды, необходимо создать каталог из общей папки. Чтобы создать каталог из общей папки, можно использовать Обозреватель каталога, интерфейс командной строки каталога Databricks Unity или команды SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Необходимые разрешения: администратор хранилища метаданных, пользователь, имеющий как права, так и привилегии для хранилища метаданных каталога Unity, или пользовательCREATE_CATALOG, имеющий как привилегию, так CREATE_CATALOG и USE PROVIDER владение объектом поставщика.

Примечание.

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

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Разностный общий доступ" и выберите "Мне предоставлен общий доступ".
  3. На вкладке "Поставщики" выберите поставщика.
  4. На вкладке "Общие папки " найдите общую папку и нажмите кнопку "Создать каталог " в строке общего ресурса.
  5. Введите имя каталога и необязательный комментарий.
  6. Нажмите кнопку Создать.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks.

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;

Cli

databricks catalogs create <catalog-name> /
--provider-name <provider-name> /
--share-name <share-name>

Каталог, созданный из общей папки, имеет тип каталога Delta Sharing. Тип можно просмотреть на странице сведений о каталоге в Обозреватель каталога или с помощью команды DESCRIBE CATALOG SQL в записной книжке или sql Databricks. Все общие каталоги перечислены в разделе "Общие каталоги>" в левой области каталога Обозреватель каталога.

Каталогом разностного общего доступа можно управлять так же, как обычными каталогами в хранилище метаданных каталога Unity. Вы можете просматривать, обновлять и удалять каталог разностного общего доступа с помощью Обозреватель каталога, интерфейса командной строки Databricks и команд SQL, а также команд SHOW CATALOGSDESCRIBE CATALOGALTER CATALOGDROP CATALOG SQL.

Структура пространства имен 3 уровня в каталоге Delta Sharing, созданном из общей папки, совпадает с тем, что находится в обычном каталоге в каталоге Unity: catalog.schema.table или catalog.schema.volume.

Данные таблицы и тома в общем каталоге доступны только для чтения. Это означает, что вы можете выполнять такие операции чтения, как:

  • DESCRIBE, SHOWи SELECT для таблиц.
  • DESCRIBE VOLUME, , LIST <volume-path>SELECT * FROM <format>.'<volume_path>'и COPY INTO для томов.

Записные книжки в общем каталоге можно просматривать и клонировать любым пользователем в USE CATALOG каталоге.

Модели в общем каталоге можно считывать и загружать для вывода любым пользователем со следующими привилегиями: EXECUTE привилегии для зарегистрированной модели, а также USE SCHEMAUSE CATALOG привилегии схемы и каталога, содержащего модель.

Управление разрешениями для схем, таблиц и томов в каталоге Delta Sharing

По умолчанию создатель каталога является владельцем всех объектов данных в каталоге Delta Sharing и может управлять разрешениями для любого из них.

Привилегии наследуются вниз, хотя некоторые рабочие области по-прежнему могут находиться в устаревшей модели безопасности, которая не предоставила наследование. См . модель наследования. Любой пользователь, которому SELECT предоставлена привилегия в каталоге, будет иметь SELECT привилегию для всех схем и таблиц в каталоге, если только это разрешение не отозвано. Аналогичным образом, любой пользователь, которому предоставлена READ VOLUME привилегия в каталоге, будет иметь READ VOLUME привилегию для всех томов в каталоге, если только это привилегия не будет отменена. Невозможно предоставить привилегии, которые предоставляют доступ к каталогу или объектам разностного общего доступа в каталоге delta sharing.

Владелец каталога может делегировать владение объектами данных другим пользователям или группам, тем самым предоставляя этим пользователям возможность управлять разрешениями объекта и жизненными циклами.

Подробные сведения об управлении привилегиями для объектов данных с помощью каталога Unity см. в разделе "Управление привилегиями" в каталоге Unity.

Чтение данных в общей таблице

Вы можете считывать данные в общей таблице с помощью любого из средств, доступных пользователю Azure Databricks: каталог Обозреватель, записных книжек, запросов SQL, ИНТЕРФЕЙСА командной строки Databricks и REST API Databricks. У вас должны быть SELECT права на таблицу.

Чтение данных в общем томе

Данные можно считывать в общем томе с помощью любого из средств, доступных пользователю Azure Databricks: каталог Обозреватель, записных книжек, запросов SQL, ИНТЕРФЕЙСА командной строки Databricks и REST API Databricks. Для тома READ VOLUME необходимо иметь привилегии.

Загрузка общей модели для вывода

Дополнительные сведения о загрузке общей модели и его использовании для пакетного вывода см. в разделе "Загрузка моделей вывода".

Запрос данных журнала таблицы

Если журнал используется вместе с таблицей, вы можете запросить данные таблицы как версию или метку времени. Требуется Databricks Runtime 12.2 LTS или более поздней версии.

Например:

SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";

Кроме того, если веб-канал изменений (CDF) включен в таблицу, можно запросить CDF. Поддерживаются как версия, так и метка времени:

SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");

Дополнительные сведения об канале изменений см. в разделе "Использование веб-канала изменений Delta Lake" в Azure Databricks.

Запрос таблицы с помощью структурированной потоковой передачи Apache Spark

Если таблица используется в журнале, ее можно использовать в качестве источника для структурированной потоковой передачи Spark. Требуется Databricks Runtime 12.2 LTS или более поздней версии.

Поддерживаемые параметры:

  • ignoreDeletes: игнорировать транзакции, которые удаляют данные.
  • ignoreChanges: повторно обработать обновления, если файлы были перезаписаны в исходной таблице из-за операции изменения данных, например UPDATE, ( MERGE INTODELETE в разделах) или OVERWRITE. Неизменяемые строки по-прежнему можно выдавать. Таким образом, подчиненные потребители должны иметь возможность обрабатывать дубликаты. Удаления не распространяются по нисходящей. ignoreChanges включает ignoreDeletes. Таким образом, если вы используете ignoreChanges, поток не будет нарушен удалением или обновлением исходной таблицы.
  • startingVersion: версия общей таблицы для начала. Все изменения таблицы, начиная с этой версии (включительно), будут считываться источником потоковой передачи.
  • startingTimestamp: Метка времени для запуска. Все изменения в таблице, зафиксированные в момент или после метки времени (включительно), считываются источником потоковой передачи. Пример: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: количество новых файлов, которые следует учитывать в каждом микропакете.
  • maxBytesPerTrigger: объем данных, обрабатываемых в каждом микропакете. Этот параметр задает "обратимое максимальное значение", то есть пакетная обработка приблизительно такого объема данных и может обрабатывать больше, чем ограничение, чтобы выполнить перемещение потокового запроса вперед в случаях, когда наименьший входной блок превышает это ограничение.
  • readChangeFeed: поток считывает веб-канал измененных данных общей таблицы.

Неподдерживаемые параметры:

  • Trigger.availableNow

Примеры структурированных запросов потоковой передачи

Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")

Если веб-канал изменений (CDF) включен в таблицу, можно выполнить потоковую передачу cdF.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

Чтение таблиц с включенными векторами удаления или сопоставлением столбцов

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Векторы удаления — это функция оптимизации хранилища, которую поставщик может включить в общих таблицах Delta. См. раздел " Что такое векторы удаления?".

Azure Databricks также поддерживает сопоставление столбцов для таблиц Delta. См. раздел "Переименование и удаление столбцов" с сопоставлением столбцов Delta Lake.

Если поставщик предоставил общий доступ к таблице с векторами удаления или сопоставлением столбцов, вы можете выполнять пакетные операции чтения в таблице с помощью хранилища SQL или кластера под управлением Databricks Runtime 14.1 или более поздней версии. Для запросов CDF и потоковой передачи требуется Среда выполнения Databricks 14.2 или более поздней версии.

Пакетные запросы можно выполнять как есть, так как они могут автоматически разрешаться responseFormat на основе функций таблицы общей таблицы.

Чтобы считывать веб-канал изменений (CDF) или выполнять потоковые запросы к общим таблицам с включенными векторами удаления или сопоставлением столбцов, необходимо задать дополнительный параметр responseFormat=delta.

В следующих примерах показаны пакетные запросы, CDF и потоковой передачи:

import org.apache.spark.sql.SparkSession

// Batch query
spark.read.format("deltaSharing").table(<tableName>)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .table(<tableName>)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)

Чтение общих представлений

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Примечание.

Общий доступ к представлениям поддерживается только для общего доступа между Databricks.

Чтение общих представлений совпадает с чтением общих таблиц с этими исключениями:

Требования к вычислениям:

  • Если учетная запись Azure Databricks отличается от учетной записи поставщика, необходимо использовать бессерверное хранилище SQL для запроса общих представлений.
  • Если поставщик находится в той же учетной записи Azure Databricks, вы можете использовать любое хранилище SQL, а также использовать кластер, использующий режим общего доступа.

Ограничения просмотра по представлению:

Нельзя создавать представления, ссылающиеся на общие представления.

Просмотр ограничений общего доступа:

Нельзя совместно использовать представления, ссылающиеся на общие таблицы или общие представления.

Требования к именованию:

Имя каталога, используемое для общего каталога, содержащего представление, не может совпадать с любым каталогом поставщиков, содержащим таблицу, на которую ссылается представление. Например, если общее представление содержится в test каталоге, а одна из таблиц поставщика, на которые ссылается в этом представлении, содержится в каталоге поставщика test , запрос приведет к ошибке конфликта пространства имен. См. статью "Создание каталога из общей папки".

Журнал и потоковая передача:

Журнал запросов или использование представления в качестве источника потоковой передачи невозможно.

JDBC/ODBC:

Инструкции из этой статьи посвящены чтению общих данных с помощью пользовательских интерфейсов Azure Databricks, в частности синтаксиса и интерфейсов каталога Unity. Вы также можете запрашивать общие представления с помощью средств Apache Spark, Python и бизнес-аналитики, таких как Tableau и Power BI, с помощью драйверов JDBC или ODBC Databricks. Сведения о том, как подключиться с помощью драйверов JDBC/ODBC Databricks, см. в статье Databricks ODBC и JDBC Driver.

Чтение общих записных книжек

Для предварительного просмотра и клонирования файлов общей записной книжки можно использовать Обозреватель каталога.

Необходимые разрешения: владелец каталога или пользователь с USE CATALOG привилегиями в каталоге, созданном из общей папки.

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".

  2. В левой области разверните меню "Каталог ", найдите и выберите каталог, созданный из общей папки.

  3. На вкладке "Другие ресурсы" вы увидите все файлы общей записной книжки.

  4. Щелкните имя файла общей записной книжки, чтобы просмотреть его.

  5. (Необязательно) Нажмите кнопку "Клонировать", чтобы импортировать общий файл записной книжки в рабочую область.

    1. В диалоговом окне "Клонировать в", при необходимости введите новое имя, а затем выберите папку рабочей области, в которую нужно клонировать файл записной книжки.
    2. Щелкните Клонировать.
    3. После клонирования записной книжки появится диалоговое окно, чтобы сообщить вам, что оно успешно клонировано. Щелкните в редакторе записной книжки в диалоговом окне, чтобы просмотреть его в редакторе записной книжки.

    Общие сведения о записных книжках Databricks.