Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Data Proc
  • Практические руководства
    • Все практические руководства
    • Работа с заданиями
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
    • Настройка сети для Data Proc
    • Использование Yandex Object Storage в Data Proc
    • Обмен данными с Managed Service for ClickHouse
    • Импорт базы данных с использованием Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к кластеру
    • Изменение кластера
    • Управление подкластерами
    • Изменение подкластера
    • Подключение к интерфейсам компонентов
    • Использование Sqoop
    • Управление заданиями
      • Все задания
      • Задания Spark
      • Задания PySpark
      • Задания Hive
      • Задания MapReduce
    • Удаление кластера
    • Работа с логами
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Среда исполнения
    • Интерфейсы и порты компонентов Data Proc
    • Задания в Data Proc
    • Автоматическое масштабирование
    • Декомиссия подкластеров и хостов
    • Сеть в Data Proc
    • Техническое обслуживание
    • Квоты и лимиты
    • Хранилище в Data Proc
    • Свойства компонентов
    • Логи в Data Proc
    • Скрипты инициализации
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • JobService
      • ResourcePresetService
      • SubclusterService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listOperations
        • listUILinks
        • start
        • stop
        • update
      • Job
        • Overview
        • cancel
        • create
        • get
        • list
        • listLog
      • ResourcePreset
        • Overview
        • get
        • list
      • Subcluster
        • Overview
        • create
        • delete
        • get
        • list
        • update
  • История изменений
    • Изменения сервиса
    • Образы
  • Вопросы и ответы
  1. Практические руководства
  2. Обмен данными с Managed Service for ClickHouse

Обмен данными с Managed Service for ClickHouse

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Выгрузите данные из Yandex Managed Service for ClickHouse
    • Подготовьте кластер Yandex Managed Service for ClickHouse
    • Запустите выгрузку из Yandex Managed Service for ClickHouse
  • Загрузите данные в Yandex Managed Service for ClickHouse
    • Подготовьте исходные данные
    • Запустите выгрузку из Yandex Data Proc
    • Проверьте загрузку данных в Yandex Managed Service for ClickHouse
  • Как удалить созданные ресурсы

Чтобы настроить загрузку и выгрузку данных между кластерами Yandex Managed Service for ClickHouse и Yandex Data Proc:

  1. Подготовьте облако к работе.
  2. Выгрузите данные из Yandex Managed Service for ClickHouse.
  3. Загрузите данные в Yandex Managed Service for ClickHouse.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Примечание

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

  1. Создайте кластер Yandex Managed Service for ClickHouse любой подходящей вам конфигурации со следующими настройками:
    • с базой данных db1;
    • с пользователем user1.
  2. Создайте кластер Yandex Data Proc любой подходящей вам конфигурации со следующими настройками:
    • с включенной опцией UI Proxy;
    • c компонентами:
      • HBASE
      • HDFS
      • HIVE
      • MAPREDUCE
      • SPARK
      • TEZ
      • YARN
      • ZEPPELIN
      • ZOOKEEPER
  3. Создайте виртуальную машину для подключения к кластерам Yandex Managed Service for ClickHouse и Yandex Data Proc.
  4. Подключитесь к виртуальной машине по SSH и настройте подключения к кластерам:
    • Yandex Managed Service for ClickHouse;
    • Yandex Data Proc.
  5. (Опционально) Чтобы экспортировать данные в бакет Yandex Object Storage:
    1. Создайте бакет Yandex Object Storage.
    2. Выдайте права на запись в него сервисному аккаунту кластера Yandex Data Proc.

Необходимые платные ресурсы

В стоимость поддержки обмена данными между Yandex Managed Service for ClickHouse и Yandex Data Proc входит:

  • плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Выгрузите данные из Yandex Managed Service for ClickHouse

Подготовьте кластер Yandex Managed Service for ClickHouse

  1. Подключитесь к базе данных db1 кластера Yandex Managed Service for ClickHouse от имени пользователя user1.

  2. Наполните базу тестовыми данными. В качестве примера используется простая таблица с именами и возрастом людей.

    1. Создайте таблицу:

      CREATE TABLE persons (
          `name` String,
          `age` UInt8) ENGINE = MergeTree ()
      ORDER BY
          `name`;
      
    2. Наполните таблицу данными:

      INSERT INTO persons VALUES
         ('Anna', 19),
         ('Michael', 65),
         ('Fred', 28),
         ('Alsou', 50),
         ('Max', 27),
         ('John', 34),
         ('Dmitry', 42),
         ('Oleg', 19),
         ('Alina', 20),
         ('Maria', 28);
      

Запустите выгрузку из Yandex Managed Service for ClickHouse

  1. Откройте веб-интерфейс Zeppelin кластера Yandex Data Proc.

  2. Нажмите ссылку Create new note и укажите параметры ноутбука Zeppelin:

    • Note name — введите произвольное имя ноутбука;
    • Default Interpreter — выберите spark.
  3. Нажмите кнопку Create.

  4. Чтобы сформировать датафрейм, создайте и запустите параграф с кодом. Чтобы запустить параграф, нажмите на кнопку Run this paragraph или используйте сочетание клавиш Shift + Enter. Текст параграфа зависит от наличия публичного доступа к хостам кластера Yandex Managed Service for ClickHouse.

    Подключение без SSL
    Подключение с SSL
    %spark.pyspark
    jdbcPort = 8123
    jdbcHostname = "c-<идентификатор кластера Yandex Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}"
    df = spark.read.format("jdbc") \
    .option("url", jdbcUrl) \
    .option("user","user1") \
    .option("password","<пароль к базе данных Yandex Managed Service for ClickHouse>") \
    .option("dbtable","persons") \
    .load()
    df.show()
    
    %spark.pyspark
    jdbcPort = 8443
    jdbcHostname = "c-<идентификатор кластера Yandex Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}?ssl=true"
    df = spark.read.format("jdbc") \
    .option("url", jdbcUrl) \
    .option("user","user1") \
    .option("password","<пароль к базе данных Yandex Managed Service for ClickHouse>") \
    .option("dbtable","persons") \
    .load()
    df.show()
    

    Если датафрейм сформирован успешно, ответ на запрос будет содержать таблицу с исходными данными.

  5. Чтобы выгрузить информацию из датафрейма в бакет Yandex Object Storage или таблицу Hive, создайте и запустите параграф с кодом.

    Object Storage
    Hive
    %spark.pyspark
    df.write.parquet('s3a://<имя бакета>/<директория бакета>/')
    spark.read.parquet('s3a://<имя бакета>/<директория бакета/').show()
    
    %spark.pyspark
    df.createOrReplaceTempView("mytempTable")
    spark.sql("CREATE TABLE IF NOT EXISTS persons AS SELECT * FROM mytempTable");
    spark.sql("SELECT * FROM persons").show()
    

    Если выгрузка прошла успешно, ответ на запрос будет содержать таблицу с исходными данными.

Загрузите данные в Yandex Managed Service for ClickHouse

Подготовьте исходные данные

Источником данных может быть директория HDFS или бакет Yandex Object Storage. В качестве исходных данных будет использоваться CSV-файл с именами и возрастом людей:

name,age
Anna,19
Michael,65
Fred,28
Alsou,50
Max,27
John,34
Dmitry,42
Oleg,19
Alina,20
Maria,28
Object Storage
Директория HDFS

Создайте файл example.csv с тестовыми данными и загрузите его в бакет Yandex Object Storage.

  1. Подключитесь к хосту кластера Yandex Data Proc в подкластере для хранения данных.

  2. Определите адрес сервера HDFS. Этот адрес понадобится указать при выгрузке данных в директорию HDFS.

    hdfs getconf -confKey fs.defaultFS
    
  3. Создайте файл example.csv с тестовыми данными.

  4. Создайте директорию HDFS для записи тестовых данных:

    hdfs fs -mkdir /user/testdata
    
  5. Скопируйте файл с тестовыми данными из локальной файловой системы в директорию HDFS:

    hdfs dfs -copyFromLocal example.csv /user/testdata/example.csv
    

Запустите выгрузку из Yandex Data Proc

  1. Откройте веб-интерфейс Zeppelin кластера Yandex Data Proc.

  2. Нажмите ссылку Create new note и укажите параметры ноутбука Zeppelin:

    • Note name — введите произвольное имя ноутбука;
    • Default Interpreter — выберите spark.
  3. Нажмите кнопку Create.

  4. Чтобы сформировать датафрейм, создайте и запустите параграф с кодом.

    Object Storage
    Директория HDFS
    %spark.pyspark
    df = spark.read.option("header", True).csv("s3a://<имя бакета>/<директория бакета>/example.csv")
    df.show()
    
    %spark.pyspark
    df = spark.read.option("header", True).csv("hdfs://<адрес сервера HDFS>/user/testdata/example.csv")
    df.show()
    

  5. Чтобы выгрузить информацию из датафрейма в базу данных Yandex Managed Service for ClickHouse, создайте и запустите параграф с кодом. Текст параграфа зависит от наличия публичного доступа к хостам кластера Yandex Managed Service for ClickHouse.

    Подключение без SSL
    Подключение с SSL
    %spark.pyspark
    jdbcPort = 8123
    jdbcHostname = "c-<идентификатор кластера Yandex Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}"
    df.write.format("jdbc") \
    .mode("error") \
    .option("url", jdbcUrl) \
    .option("dbtable", "example") \
    .option("createTableOptions", "ENGINE = MergeTree() ORDER BY age") \
    .option("user","user1") \
    .option("password","<пароль к базе данных Yandex Managed Service for ClickHouse>") \
    .save()
    
    %spark.pyspark
    jdbcPort = 8443
    jdbcHostname = "c-<идентификатор кластера Yandex Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}?ssl=true"
    df.write.format("jdbc") \
    .mode("error") \
    .option("url", jdbcUrl) \
    .option("dbtable", "example") \
    .option("createTableOptions", "ENGINE = MergeTree() ORDER BY age") \
    .option("user","user1") \
    .option("password","<пароль к базе данных Yandex Managed Service for ClickHouse>") \
    .save()
    

Проверьте загрузку данных в Yandex Managed Service for ClickHouse

  1. Подключитесь к базе данных db1 кластера Yandex Managed Service for ClickHouse от имени пользователя user1.

  2. Выполните запрос:

    SELECT * FROM example;
    

    Если выгрузка прошла успешно, ответ на запрос будет содержать таблицу с данными.

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите виртуальную машину.
  2. Если вы зарезервировали для виртуальной машины публичный статический IP-адрес, удалите его.
  3. Удалите кластеры:
    • Yandex Managed Service for ClickHouse;
    • Yandex Data Proc.
  4. Если вы создавали бакет Yandex Object Storage, удалите его.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Выгрузите данные из Yandex Managed Service for ClickHouse
  • Подготовьте кластер Yandex Managed Service for ClickHouse
  • Запустите выгрузку из Yandex Managed Service for ClickHouse
  • Загрузите данные в Yandex Managed Service for ClickHouse
  • Подготовьте исходные данные
  • Запустите выгрузку из Yandex Data Proc
  • Проверьте загрузку данных в Yandex Managed Service for ClickHouse
  • Как удалить созданные ресурсы