Использование Yandex Object Storage в сервисе Yandex Managed Service for Apache Spark™
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
В бакетах Yandex Object Storage можно хранить как файлы, необходимые для выполнения заданий в кластере Yandex Managed Service for Apache Spark™, так и результаты выполнения заданий.
Кластеры Yandex Managed Service for Apache Spark™ уже сконфигурированы для работы с S3-хранилищами. Чтобы использовать бакет Object Storage в PySpark-задании:
- Предоставьте сервисному аккаунту кластера Yandex Managed Service for Apache Spark™ разрешение на доступ к бакету Object Storage.
- Укажите путь к каталогу в бакете Object Storage в аргументах задания.
В этом руководстве показан пример работы с таблицей в бакете Object Storage из PySpark-задания с использованием встроенного локального каталога Hive.
Чтобы реализовать описанный пример:
Если созданные ресурсы вам больше не нужны, удалите их.
Примечание
Локальный каталог Hive позволяет обращаться к таблицам по имени без указания пути и использовать базовые возможности Hive, не подключая кластер Apache Hive™ Metastore. Хранящиеся в локальном каталоге метаданные остаются недоступными другим кластерам. Пример использования глобального каталога приведен в руководстве Работа с Yandex Object Storage из PySpark-задания с использованием кластера Apache Hive™ Metastore.
Необходимые платные ресурсы
- Бакеты Object Storage: использование хранилища и выполнение операций с данными (тарифы Object Storage).
- Сервис Yandex Cloud Logging: объем записываемых данных и время их хранения (тарифы Cloud Logging).
Подготовьте инфраструктуру
-
Создайте сервисный аккаунт
spark-agentдля кластера Yandex Managed Service for Apache Spark™ с ролью managed-spark.integrationProvider — чтобы кластер Yandex Managed Service for Apache Spark™ мог взаимодействовать с другими ресурсами. -
<бакет_для_исходного_кода_PySpark_задания>.<бакет_для_выходных_данных_PySpark_задания>.
-
Предоставьте разрешения для сервисного аккаунта
spark-agentна созданные бакеты:<бакет_для_исходного_кода_PySpark_задания>— разрешениеREAD.<бакет_для_выходных_данных_PySpark_задания>— разрешениеREAD и WRITE.
-
Создайте облачную сеть с именем
spark-network.Вместе с ней автоматически будут созданы три подсети в разных зонах доступности.
-
Создайте кластер Yandex Managed Service for Apache Spark™ с параметрами:
- Сервисный аккаунт —
spark-agent. - Сеть —
spark-network. - Подсеть —
spark-network-kz1-a.
- Сервисный аккаунт —
Подготовьте PySpark-задание
Для PySpark-задания используется Python-скрипт, который создает таблицу table_1 в БД database_1. В аргументах PySpark-задания указан путь к каталогу, в котором будет создана БД. Для подключения встроенного каталога Hive в скрипте указывается параметр конфигурации Spark-сессии spark.sql.catalogImplementation=hive. Скрипт будет храниться в бакете Object Storage.
Подготовьте файл скрипта:
Проверьте результат
- В консоли управления
выберите каталог. - Перейдите
в сервис Managed Service for Apache Spark. - Нажмите на имя нужного кластера и выберите Задания.
- Дождитесь, когда созданное PySpark-задание перейдет в статус Done.
- Убедитесь, что в бакете
<бакет_для_выходных_данных_PySpark_задания>в папкеwarehouseпоявилась БДdatabase_1. Теперь данные из созданной БД хранятся в бакете Object Storage в формате JSON.
Удалите созданные ресурсы
Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не платить за них: