Использование Delta Lake в пуле SQL

Завершено

Delta Lake разработан как транзакционный, реляционный уровень хранения для Apache Spark, включая пулы Spark в Azure Synapse Analytics. Однако Azure Synapse Analytics также включает бессерверную среду выполнения пула SQL, которая позволяет аналитикам данных и инженерам выполнять запросы SQL к данным в озере данных или реляционной базе данных.

Примечание.

Вы можете запрашивать данные только из таблиц Delta Lake в бессерверном пуле SQL. Нельзя обновлять, вставлять или удалять данные.

Запрос файлов в разностном формате с помощью OPENROWSET

Бессерверный пул SQL в Azure Synapse Analytics включает поддержку чтения файлов в разностном формате. Это позволяет использовать пул SQL для запроса таблиц Delta Lake. Этот подход может быть полезен в сценариях, в которых вы хотите использовать таблицы Spark и Delta для обработки больших объемов данных, но используйте пул SQL, чтобы выполнять запросы для создания отчетов и анализа обработанных данных.

В следующем примере запрос SQL SELECT считывает данные в разностном формате с помощью функции OPENROWSET.

SELECT *
FROM
    OPENROWSET(
        BULK 'https://mystore.dfs.core.windows.net/files/delta/mytable/',
        FORMAT = 'DELTA'
    ) AS deltadata

Этот запрос можно выполнить в бессерверном пуле SQL, чтобы получить последние данные из таблицы Delta Lake, хранящейся в указанном расположении файла.

Вы также можете создать базу данных и добавить источник данных, инкапсулирующий расположение файлов данных Delta Lake, как показано в следующем примере:

CREATE DATABASE MyDB
      COLLATE Latin1_General_100_BIN2_UTF8;
GO;

USE MyDB;
GO

CREATE EXTERNAL DATA SOURCE DeltaLakeStore
WITH
(
    LOCATION = 'https://mystore.dfs.core.windows.net/files/delta/'
);
GO

SELECT TOP 10 *
FROM OPENROWSET(
        BULK 'mytable',
        DATA_SOURCE = 'DeltaLakeStore',
        FORMAT = 'DELTA'
    ) as deltadata;

Примечание.

При работе с данными Delta Lake, хранящимися в формате Parquet, обычно рекомендуется создать базу данных с параметрами сортировки на основе UTF-8, чтобы обеспечить совместимость строк.

Запрос таблиц каталога

Бессерверный пул SQL в Azure Synapse Analytics имеет общий доступ к базам данных в хранилище метаданных Spark, поэтому можно запрашивать таблицы каталога, созданные с помощью Spark SQL. В следующем примере запрос SQL в бессерверном пуле SQL запрашивает таблицу каталога, содержащую данные Delta Lake:

-- By default, Spark catalog tables are created in a database named "default"
-- If you created another database using Spark SQL, you can use it here
USE default;

SELECT * FROM MyDeltaTable;

Совет

Дополнительные сведения об использовании разностных таблиц из бессерверного пула SQL см. в статье Запрос файлов Delta Lake с помощью бессерверного пула SQL в Azure Synapse Analytics в документации по Azure Synapse Analytics.