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. Использование Sqoop

Использование Sqoop

Статья создана
Yandex Cloud
  • Формирование строки подключения JDBC
  • Установка JDBC-драйвера
  • Импорт с помощью Sqoop
    • В Object Storage
    • В директорию HDFS
    • В Apache Hive
    • В Apache HBase

Импорт баз данных в кластер Data Proc из внешних источников выполняется с помощью утилиты Sqoop. Раздел содержит:

  • сведения о формировании строк подключения и установке драйверов для Sqoop;

  • команды для импорта данных с помощью Sqoop в:

    • Yandex Object Storage;
    • директорию HDFS;
    • Apache Hive;
    • Apache HBase.

Формирование строки подключения JDBC

Строка подключения JDBC имеет вид:

PostgreSQL
MySQL
jdbc:postgresql://<адрес сервера базы данных>:5432/<имя базы данных>

Для Yandex Managed Service for PostgreSQL используйте строку с особым FQDN, который указывает на хост-мастер:

jdbc:postgresql://c-<идентификатор кластера>.rw.mdb.yandexcloud.net:6432/<имя базы данных>

Идентификатор кластера можно получить со списком кластеров в каталоге.

jdbc:mysql://<адрес сервера базы данных>:3306/<имя базы данных>

Для Yandex Managed Service for MySQL используйте строку с особым FQDN, который указывает на хост-мастер:

jdbc:mysql://c-<идентификатор кластера>.rw.mdb.yandexcloud.net:3306/<имя базы данных>

Идентификатор кластера можно получить со списком кластеров в каталоге.

Установка JDBC-драйвера

Чтобы Sqoop мог подключиться к базе данных через строку подключения JDBC, установите JDBC-драйвер:

PostgreSQL
MySQL

Драйвер для Yandex Managed Service for PostgreSQL предустановлен в Data Proc, дополнительных действий не требуется.

Подключитесь по SSH к хосту подкластера Data Proc для хранения данных и выполните команду:

MYSQL_VER="8.0.25" && \
wget "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_VER}.tar.gz" \
-O 'mysql-connector-java.tar.gz' && \
sudo tar -xf mysql-connector-java.tar.gz -C /var/lib/sqoop/ && \
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/var/lib/sqoop/mysql-connector-java-${MYSQL_VER}.jar

Примечание

Чтобы установить другую версию драйвера, измените в команде значение переменной MYSQL_VER.

Импорт с помощью Sqoop

В Object Storage

Этот тип импорта доступен, если в кластере Data Proc активирован компонент Sqoop.

Чтобы импортировать данные в бакет Object Storage:

  1. При создании или изменении кластера Data Proc укажите имя бакета для импорта в Object Storage. Убедитесь, что сервисный аккаунт Data Proc имеет права на запись в этот бакет.

  2. Сформируйте строки подключения для JDBC.

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

  4. Установите драйверы для работы Sqoop, если они еще не установлены.

  5. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
      --connect <строка подключения JDBC> \
      --username <имя пользователя базы данных> \
      --P \
      --table '<имя таблицы базы данных>' \
      --target-dir 's3a://<имя бакета для импорта>/<директория назначения>' \
      --split-by '<столбец таблицы, используемый для разделения>'
    

    Важно

    Не указывайте имя существующей директории бакета.

В директорию HDFS

Этот тип импорта доступен, если в кластере Data Proc включены сервисы:

  • HBase;
  • HDFS;
  • Sqoop;
  • Yarn;
  • Zookeeper.

Чтобы импортировать данные в директорию HDFS:

  1. Сформируйте строки подключения для JDB.

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

  3. Установите драйверы для работы Sqoop, если они еще не установлены.

  4. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
      --connect <строка подключения JDBC> \
      --username <имя пользователя базы данных> \
      --table '<имя таблицы базы данных>' \
      --target-dir '<директория HDFS>' \
      --P \
      --split-by '<столбец таблицы, используемый для разделения>'
    

    Важно

    Не указывайте имя существующей директории HDFS.

В Apache Hive

Этот тип импорта доступен, если в кластере Data Proc включены сервисы:

  • HDFS;
  • Hive;
  • Mapreduce;
  • Sqoop;
  • Yarn.

Чтобы импортировать данные в таблицу Hive:

  1. При создании или изменении кластера Data Proc добавьте в свойства кластера ключ hive:hive.execution.engine со значением mr.

  2. Сформируйте строки подключения для JDBC.

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

  4. Установите драйверы для работы Sqoop, если они еще не установлены.

  5. Создайте базу данных Hive:

    hive -e "CREATE DATABASE <имя базы данных Hive>;"
    
  6. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
      --connect <строка подключения JDBC> \
      --username <имя пользователя исходной базы данных> \
      --P \
      --table '<имя таблицы в исходной базе данных>' \
      --hive-import \
      --create-hive-table \
      --hive-database '<имя базы данных Hive>' \
      --hive-table '<имя таблицы Hive>' \
      --split-by '<столбец таблицы, используемый для разделения>'
    

    Важно

    Не указывайте имя существующей таблицы Hive.

В Apache HBase

Этот тип импорта доступен, если в кластере Data Proc включены сервисы:

  • HBase;
  • HDFS;
  • Sqoop;
  • Yarn;
  • Zookeeper.

Чтобы импортировать данные в Apache HBase:

  1. Сформируйте строки подключения для JDBC.

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

  3. Установите драйверы для работы Sqoop, если они еще не установлены.

  4. Выполните команду:

    sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
      --connect <строка подключения JDBC> \
      --username <имя пользователя исходной базы данных> \
      --P \
      --table '<имя таблицы в исходной базе данных>' \
      --hbase-create-table \
      --column-family '<семейство столбцов HBase>' \
      --hbase-table '<имя таблицы HBase>' \
      --split-by '<столбец таблицы, используемый для разделения>'
    

    Важно

    Не указывайте имя существующей таблицы HBase.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Формирование строки подключения JDBC
  • Установка JDBC-драйвера
  • Импорт с помощью Sqoop
  • В Object Storage
  • В директорию HDFS
  • В Apache Hive
  • В Apache HBase