Поделиться через


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

Важный

Azure HDInsight на AKS будет прекращено 31 января 2025 г. Узнайте больше о из этого объявления.

Необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого завершения рабочих нагрузок.

Важный

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

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

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

  • УДАЛИТЬ
  • ОБНОВЛЯТЬ
  • ВСТАВКА
  • ОБЪЕДИНЯТЬ

Необходимые условия

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

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

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

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

    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