Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Все инструкции
      • Подключение к интерфейсам компонентов
      • Использование Sqoop
      • Настройка Apache Iceberg™
        • Настройка Delta Lake в однокластерном режиме
        • Настройка Delta Lake в мультикластерном режиме
        • Советы по настройке и применению Delta Lake
    • Подготовка и использование виртуальных окружений Python
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовьте инфраструктуру
  • Настройте свойства компонентов для работы с Delta Lake
  • Пример использования Delta Lake
  1. Пошаговые инструкции
  2. Сервисы Apache и другие сторонние сервисы
  3. Delta Lake
  4. Настройка Delta Lake в однокластерном режиме

Настройка Delta Lake в однокластерном режиме

Статья создана
Yandex Cloud
Обновлена 16 декабря 2024 г.
  • Подготовьте инфраструктуру
  • Настройте свойства компонентов для работы с Delta Lake
  • Пример использования Delta Lake

Yandex Data Processing версии 2.0 и выше поддерживает использование Delta Lake в однокластерном режиме.

Подробную информацию о Delta Lake см. в разделе Delta Lake в Yandex Data Processing и в документации Delta Lake.

Примечание

Delta Lake не является частью сервиса Yandex Data Processing и не сопровождается командой разработки и службой поддержки Yandex Cloud, а его использование не входит в условия использования Yandex Data Processing.

Важно

Если разные Spark-задания в однокластерном режиме одновременно изменяют данные в таблице, информация может быть потеряна.

Настройте Spark-задания так, чтобы исключить одновременную модификацию данных или используйте мультикластерный режим. Подробнее в документации Delta Lake.

Подготовьте инфраструктуруПодготовьте инфраструктуру

  1. Если у вас нет кластера Yandex Data Processing, создайте его.

  2. Если для хранения данных вы подключили к кластеру бакет Yandex Object Storage:

    1. Создайте в бакете каталог c именем warehouse.
    2. Установите свойство spark.sql.warehouse.dir в значение s3a://<имя_бакета>/warehouse/.
  3. Создайте кластер Hive Metastore и подключите его к кластеру Yandex Data Processing.

Настройте свойства компонентов для работы с Delta LakeНастройте свойства компонентов для работы с Delta Lake

  1. Установите следующие свойства на уровне кластера или на уровне отдельного задания:

    • spark.sql.extensions в значение io.delta.sql.DeltaSparkSessionExtension;
    • spark.sql.catalog.spark_catalog в значение org.apache.spark.sql.delta.catalog.DeltaCatalog.
  2. Добавьте библиотеки Delta Lake в зависимости кластера или отдельного задания (нужные версии библиотек зависят от версии Yandex Data Processing):

    Yandex Data Processing 2.0.x
    Yandex Data Processing 2.1.0 или 2.1.3
    Yandex Data Processing 2.1.4 и выше

    Воспользуйтесь одним из способов:

    • Скачайте файл библиотеки delta-core_2.12-0.8.0.jar, сохраните его в бакет Object Storage и передайте URL файла в свойстве spark.jars:

      spark.jars=s3a://<имя_бакета>/<путь_к_файлу>

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

    • Настройте доступ кластера к репозиторию Maven и установите свойство spark.jars.packages в значение io.delta:delta-core_2.12:0.8.0.

      Настроить доступ к Maven можно двумя способами:

      • В группе безопасности кластера разрешите сетевой доступ к репозиторию Maven Central.
      • Настройте альтернативный репозиторий Maven и разрешите трафик к нему в группе безопасности кластера.
    • Скачайте файл библиотеки delta-core_2.12-0.8.0.jar, скопируйте его на все узлы кластера вручную или с помощью скриптов инициализации и передайте полный путь к файлу в свойствах spark.driver.extraClassPath и spark.executor.extraClassPath.

    Воспользуйтесь одним из способов:

    • Скачайте файлы библиотек delta-core_2.12-2.0.2.jar и delta-storage-2.0.2.jar, сохраните их в бакет Object Storage и передайте URL файлов через запятую в свойстве spark.jars:

      spark.jars=s3a://<имя_бакета>/<путь_к_файлу_core>,s3a://<имя_бакета>/<путь_к_файлу_storage>

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

    • Настройте доступ кластера к репозиторию Maven и установите свойство spark.jars.packages в значение io.delta:delta-core_2.12:2.0.2,io.delta:delta-storage:2.0.2.

      Настроить доступ к Maven можно двумя способами:

      • В группе безопасности кластера разрешите сетевой доступ к репозиторию Maven Central.
      • Настройте альтернативный репозиторий Maven и разрешите трафик к нему в группе безопасности кластера.
    • Скачайте файлы библиотек delta-core_2.12-2.0.2.jar и delta-storage-2.0.2.jar, скопируйте их на все узлы кластера вручную или с помощью скриптов инициализации и передайте полный путь к файлам в свойствах spark.driver.extraClassPath и spark.executor.extraClassPath.

    Воспользуйтесь одним из способов:

    • Скачайте файлы библиотек delta-core_2.12-2.3.0.jar и delta-storage-2.3.0.jar, сохраните их в бакет Object Storage и передайте URL файлов через запятую в свойстве spark.jars:

      spark.jars=s3a://<имя_бакета>/<путь_к_файлу core>,s3a://<имя_бакета>/<путь_к_файлу_storage>

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

    • Настройте доступ кластера к репозиторию Maven и установите свойство spark.jars.packages в значение io.delta:delta-core_2.12:2.3.0,io.delta:delta-storage:2.3.0.

      Настроить доступ к Maven можно двумя способами:

      • В группе безопасности кластера разрешите сетевой доступ к репозиторию Maven Central.
      • Настройте альтернативный репозиторий Maven и разрешите трафик к нему в группе безопасности кластера.
    • Скачайте файлы библиотек delta-core_2.12-2.3.0.jar и delta-storage-2.3.0.jar, скопируйте их на все узлы кластера вручную или с помощью скриптов инициализации и передайте полный путь к файлам в свойствах spark.driver.extraClassPath и spark.executor.extraClassPath.

Теперь вы можете использовать Delta Lake в кластере Yandex Data Processing.

Если перечисленные свойства Spark переданы на уровне кластера, то для работы с таблицами Delta Lake можно использовать Spark Thrift Server.

Пример использования Delta LakeПример использования Delta Lake

Пример проверялся в кластере Yandex Data Processing версии 2.0 с доступом к репозиторию Maven Central.

  1. Подключитесь по SSH к хосту-мастеру кластера Yandex Data Processing.

  2. Запустите в кластере сессию Spark, передав необходимые параметры:

    spark-sql \
        --conf spark.jars.packages=io.delta:delta-core_2.12:0.8.0 \
        --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \
        --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
    
  3. В рамках запущенной сессии создайте базу данных и переключитесь на нее:

    CREATE DATABASE testdelta;
    USE testdelta;
    
  4. Создайте тестовую таблицу и наполните ее данными:

    CREATE TABLE tab1(a INTEGER NOT NULL, b VARCHAR(100)) USING DELTA;
    INSERT INTO tab1 VALUES (1,'One'), (2,'Two'), (3,'Three');
    
  5. Замените значения в столбце b, добавив к ним значения из столбца a, преобразованные в строку:

    UPDATE tab1 SET b=b || ' ** ' || CAST(a AS VARCHAR(10));
    
  6. Проверьте результат:

    SELECT * FROM tab1;
    
    3	Three ** 3
    2	Two ** 2
    1	One ** 1
    

Была ли статья полезна?

Предыдущая
Настройка Apache Iceberg™
Следующая
Настройка Delta Lake в мультикластерном режиме
Проект Яндекса
© 2025 ООО «Яндекс.Облако»