Облачная платформаEvolution

Подключение виртуальной машины к инстансу Managed Spark через Spark Connect

Эта статья полезна?

С помощью этого руководства вы научитесь запускать на виртуальной машине Python-скрипт для подключения к инстансу Managed Spark через Spark-connect.

Вы будете использовать следующие сервисы:

  • Managed Spark — сервис, который позволяет развернуть кластерное вычислительное решение на основе Apache Spark для распределенной обработки данных.

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

Шаги:

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Создайте пароль и добавьте его в Secret Manager. Этот секрет станет паролем для доступа к интерфейсу Managed Spark.

  3. Создайте SNAT-шлюз в той же зоне доступности и VPC. Он необходим для обновления пакетов на виртуальной машине.

1. Подготовьте инстанс Managed Spark

  1. Создайте кластер Data Platform, в котором будет размещен инстанс Managed Spark. В блоке Сетевые настройки укажите VPC, зону доступности и подсеть, выбранные при создании DNS-сервера.

  2. Создайте инстанс Managed Spark. В блоке Конфигурация укажите зону доступности, в которой создан кластер Data Platform.

  3. После того, как статус инстанса Managed Spark сменится на «Готов», cоздайте Spark Connect.

2. Подготовьте виртуальную машину

На этом шаге вы создадите виртуальную машину и установите на нее все необходимое для запуска скрипта.

  1. Создайте виртуальную машину. В блоке Сетевой интерфейс выберите Подсеть. Укажите VPC и подсеть, выбранные при создании инстанса Managed Spark.

  2. Обновите список пакетов:

    sudo apt update
  3. Установите Java:

    sudo apt install openjdk-11-jre-headless -y
  4. Установите Pip:

    sudo apt install python3-pip
  5. Установите пакеты, необходимые для запуска Python-скрипта:

    pip3 install pyspark=="3.5.6"
    pip3 install dotenv=="0.9.9"
    pip3 install pandas=="2.2.3"
    pip3 install pyarrow=="21.0.0"
    pip3 install grpcio=="1.66.2"
    pip3 install protobuf=="5.28.3"
    pip3 install grpcio-status=="1.66.2"
    pip3 install setuptools=="80.9.0"

3. Экспортируйте переменные окружения

На этом шаге вы настроите переменные окружения, необходимые для установки соединения со Spark Connect.

  1. Перейдите в сервис Managed Spark и откройте карточку созданного ранее инстанса.

  2. Откройте вкладку Spark Connect.

  3. В блоке Настройки доступа скопируйте внутренний URL подключения.

  4. В серийной консоли виртуальной машины выполните команду:

    export SPARK_CONNECT_HOST=<internal-spark-url>

    Где <internal-spark-url> — скопированное значение внутреннего URL подключения.

  5. Скачайте на виртуальную машину root-сертификат dp-cert.crt:

    curl -s -O https://xbox.cloud.ru/s/wEso6nB7bKYxkkf/download/dp-cert.crt
  6. Выполните команду:

    export GRPC_DEFAULT_SSL_ROOTS_FILE_PATH='./dp-cert.crt'
Примечание

При перезапуске серийной консоли необходимо повторить команды, указанные в п.4 и 6.

4. Запустите скрипт

На этом шаге вы подготовите и запустите скрипт, выполняющий подключение к инстансу Managed Spark через Spark Connect.

  1. Скопируйте скрипт:

    import os
    from pyspark.sql import SparkSession
    from dotenv import load_dotenv
    load_dotenv()
    host = os.environ["SPARK_CONNECT_HOST"]
    spark_connect_url = f"sc://{host}:443/;use_ssl=true"
    print("Устанавливается соединение к Spark Connect")
    spark = SparkSession.builder.remote(spark_connect_url).getOrCreate()
    print("Соединение установлено")
    columns = ["id", "name"]
    data = [
    (1, "Sarah"),
    (2, "Maria")
    ]
    df = spark.createDataFrame(data).toDF(*columns)
    print("Результат dataframe:")
    df.show()
    spark.stop()
  2. В серийной консоли создайте файл connect-from-vm.py:

    nano connect-from-vm.py
  3. Вставьте скопированный скрипт и сохраните файл.

  4. Запустите скрипт:

    python3 connect-from-vm.py

5. Посмотрите логи Spark Connect

На этом шаге вы посмотрите логи выполнения скрипта в Spark Connect.

  1. Перейдите в сервис Managed Spark и откройте карточку инстанса, в котором создан Spark Connect.

  2. Откройте вкладку Spark Connect.

  3. В блоке Логирование нажмите Открыть логи.

Результат

Вы запустили на виртуальной машине Python-скрипт, который подключился к инстансу Managed Spark через Spark Connect.