Чтение таблиц Delta Lake (Synapse или внешнее расположение)

Внимание

Эта функция в настоящее время доступна для предварительного ознакомления. Дополнительные условия использования для предварительных версий Microsoft Azure включают более юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в статье Azure HDInsight в предварительной версии AKS. Для вопросов или предложений функций отправьте запрос на AskHDInsight с подробными сведениями и следуйте за нами для получения дополнительных обновлений в сообществе Azure HDInsight.

В этой статье представлен обзор чтения таблицы Delta Lake без доступа к хранилищу метаданных (Synapse или других хранилищ метаданных без общедоступного доступа).

Вы можете выполнять следующие операции с таблицами с помощью Trino с HDInsight в AKS.

  • DELETE
  • UPDATE
  • ВСТАВИТЬ
  • MERGE

Необходимые компоненты

Создание схем и таблиц Delta Lake

В этом разделе показано, как создать таблицу Delta по существующему расположению, если у вас уже настроен каталог Delta Lake.

  1. Перейдите к учетной записи хранения с помощью Storage browser портал Azure, где находится базовый каталог таблицы. Если эта таблица возникает в Synapse, скорее всего, она находится в synapse/workspaces/.../warehouse/ пути и будет называться в честь таблицы и содержит _delta_log каталог. Выберите Copy URL из трех точек, расположенных рядом с папкой.

    Этот http-путь необходимо преобразовать в путь ABFS (файловая система BLOB-объектов Azure):

    Http-путь хранилища структурирован следующим образом: https://{{AZURE_STORAGE_ACCOUNT}}.blob.core.windows.net/{{AZURE_STORAGE_CONTAINER}}/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/

    Пути ABFS должны выглядеть следующим образом: abfss://{{AZURE_STORAGE_CONTAINER}}@{{AZURE_STORAGE_ACCOUNT}}.dfs.core.windows.net/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/

    Пример: abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/

  2. Создайте схему Delta Lake в Trino.

    CREATE SCHEMA delta.default;
    

    Кроме того, можно создать схему в определенной учетной записи хранения:

    CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
    
  3. Используйте процедуру register_table для создания таблицы.

    CALL delta.system.register_table(schema_name => 'default', table_name => 'table_name', table_location => 'abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/');
    
  4. Запросите таблицу для проверки.

    SELECT * FROM delta.default.table_name
    

Запись таблиц Delta Lake в Synapse Spark

Используйте format("delta") для сохранения кадра данных в виде разностной таблицы, а затем можно использовать путь, в котором вы сохранили кадр данных в виде разностного формата, чтобы зарегистрировать таблицу в Trino.

my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")

Следующие шаги

Настройка кэширования в Trino