Что такое Apache Sqoop.
Apache Sqoop - это программное средство от Apache, которое позволяет импортировать данные в Hadoop (например в Hive) из различных реляционных СУБД, например MySQL.
В предыдущих разделах мы импортировали путем загрузки дампа базы в CSV-формате в каталог таблицы в HDFS.
Мы же с помощью одной команды sqoop сможем сразу импортировать наши данные из базы напрямую в hive.
Sqoop позволяет работать с различными СУБД, имеет в своем арсенале огромное количество настроек, которые подробно документированы на официальной странице.
Приступим к установке.
Установка Apache Sqoop.
Сначала нужно скачать архив (именно такой sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz) с официальной страницы.
Разархивировать и перенести в каталог /usr/local/sqoop-1.4.7
Открыть в редакторе файл bashrc:
cd
sudo gedit .bashrc
Добавить в конец файла переменные:
export SQOOP_HOME=/usr/local/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin
export HIVE_CONF_DIR=/usr/local/hive/conf
Применить настройки:source .bashrc
Перейти в каталог настроек sqoop и создать файл sqoop-env.sh из шаблона:
cd $SQOOP_HOME/conf
sudo cp sqoop-env.sh.template sqoop-env.sh
Открыть sqoop-env.sh в редакторе и указать следующие пути:
export HADOOP_COMMON_HOME=/usr/local/hadoop/hadoop-2.9.1
export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.9.1
export HIVE_HOME=/usr/local/hive
Сохранить и выйти. На этом вроде как все настройки завершены, но у меня постоянно возникали ошибки из-за того, что sqoop не видел java-классы для hive. Я так и не смог указать нужную переменную окружения и решил проблему, просто скопировав jar-файлы из hive/lib в sqoop/lib
sudo cp $HIVE_HOME/lib/ $SQOOP_HOME/lib/
Теперь все готово к импорту данных.
Импорт данных из MySql в Hive.
Параметров импорта достаточно много, здесь будут приведены проверенные для MySql. Команда для импорта следующая:
sqoop import --connect jdbc:mysql://IP_сервера/имя_базы --username имя_пользователя -P --table название_таблицы --hive-import --hive-table таблица_hive --warehouse-dir "/user/hive/warehouse/" --create-hive-table
Параметры команды:
IP_сервера - тут все понятно, может быть имя, при наличии DNS;
имя_базы - имя базы, к которой подключаемся;
имя_пользователя - пользователь базы данных;
ключ -P - тут можно указать пароль пользователя, если не указан, буден запрошен в процессе соединения;
название_таблицы - имя импортируемой таблицы;
таблица_hive - таблица hive, если она уже существует, выполнить drop table;
ключ --warehouse-dir - путь к данным таблицы hive в HDFS;
ключ --create-hive-table - создать таблицу hive в процессе импорта.
Данная команда протестирована на хостинге, если есть проблемы при импорте, пишите вопросы в комментариях, а лучше в группе ВКонтакте.
Комментировать могуть только зарегистрированные пользователи