Sqoop - Краткое руководство

Традиционная система управления приложениями, то есть взаимодействие приложений с реляционной базой данных с помощью СУБД, является одним из источников, генерирующих большие данные. Такие большие данные, генерируемые СУБД, хранятся в реляционнойDatabase Servers в структуре реляционной базы данных.

Когда появились хранилища и анализаторы больших данных, такие как MapReduce, Hive, HBase, Cassandra, Pig и т. Д. Экосистемы Hadoop, им потребовался инструмент для взаимодействия с серверами реляционных баз данных для импорта и экспорта находящихся в них больших данных. Здесь Sqoop занимает место в экосистеме Hadoop, чтобы обеспечить возможное взаимодействие между сервером реляционной базы данных и HDFS Hadoop.

Sqoop - «Из SQL в Hadoop и из Hadoop в SQL»

Sqoop - это инструмент, предназначенный для передачи данных между Hadoop и серверами реляционных баз данных. Он используется для импорта данных из реляционных баз данных, таких как MySQL, Oracle, в Hadoop HDFS и экспорта из файловой системы Hadoop в реляционные базы данных. Он предоставляется Apache Software Foundation.

Как работает Sqoop?

На следующем изображении описан рабочий процесс Sqoop.

Sqoop Import

Инструмент импорта импортирует отдельные таблицы из СУБД в HDFS. Каждая строка в таблице рассматривается как запись в HDFS. Все записи хранятся как текстовые данные в текстовых файлах или как двоичные данные в файлах Avro и Sequence.

Sqoop экспорт

Инструмент экспорта экспортирует набор файлов из HDFS обратно в СУБД. Файлы, передаваемые в качестве входных данных для Sqoop, содержат записи, которые называются строками в таблице. Они считываются и анализируются в набор записей и разделяются указанным пользователем разделителем.

Поскольку Sqoop является подпроектом Hadoop, он может работать только в операционной системе Linux. Следуйте инструкциям ниже, чтобы установить Sqoop в вашей системе.

Шаг 1. Проверка установки JAVA

Перед установкой Sqoop в вашей системе должна быть установлена ​​Java. Давайте проверим установку Java, используя следующую команду -

$ java –version

Если Java уже установлена ​​в вашей системе, вы увидите следующий ответ -

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Если Java не установлена ​​в вашей системе, выполните действия, указанные ниже.

Установка Java

Следуйте простым шагам, приведенным ниже, чтобы установить Java в вашу систему.

Шаг 1

Загрузите Java (JDK <последняя версия> - X64.tar.gz), перейдя по следующей ссылке .

Затем jdk-7u71-linux-x64.tar.gz будет загружен в вашу систему.

Шаг 2

Как правило, вы можете найти загруженный файл Java в папке Downloads. Проверьте это и извлеките файл jdk-7u71-linux-x64.gz, используя следующие команды.

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Шаг 3

Чтобы сделать Java доступной для всех пользователей, вы должны переместить ее в папку «/ usr / local /». Откройте root и введите следующие команды.

$ su
password:

# mv jdk1.7.0_71 /usr/local/java
# exitStep IV:

Шаг 4

Для настройки переменных PATH и JAVA_HOME добавьте следующие команды в файл ~ / .bashrc.

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

Теперь примените все изменения к текущей работающей системе.

$ source ~/.bashrc

Шаг 5

Используйте следующие команды для настройки альтернатив Java -

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Теперь проверьте установку с помощью команды java -version с терминала, как описано выше.

Шаг 2. Проверка установки Hadoop

Перед установкой Sqoop необходимо установить Hadoop в вашей системе. Давайте проверим установку Hadoop, используя следующую команду -

$ hadoop version

Если Hadoop уже установлен в вашей системе, вы получите следующий ответ -

Hadoop 2.4.1
--
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4

Если Hadoop не установлен в вашей системе, выполните следующие действия:

Скачивание Hadoop

Загрузите и извлеките Hadoop 2.4.1 из Apache Software Foundation, используя следующие команды.

$ su
password:

# cd /usr/local
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit

Установка Hadoop в псевдо-распределенном режиме

Выполните следующие действия, чтобы установить Hadoop 2.4.1 в псевдораспределенном режиме.

Шаг 1. Настройка Hadoop

Вы можете установить переменные среды Hadoop, добавив следующие команды в файл ~ / .bashrc.

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

Теперь примените все изменения к текущей работающей системе.

$ source ~/.bashrc

Шаг 2: настройка Hadoop

Вы можете найти все файлы конфигурации Hadoop в папке «$ HADOOP_HOME / etc / hadoop». Вам необходимо внести соответствующие изменения в эти файлы конфигурации в соответствии с вашей инфраструктурой Hadoop.

$ cd $HADOOP_HOME/etc/hadoop

Чтобы разрабатывать программы Hadoop с использованием java, вам необходимо сбросить переменные среды java в hadoop-env.sh файл, заменив значение JAVA_HOME на расположение java в вашей системе.

export JAVA_HOME=/usr/local/java

Ниже приведен список файлов, которые необходимо отредактировать для настройки Hadoop.

core-site.xml

Файл core-site.xml содержит такую ​​информацию, как номер порта, используемый для экземпляра Hadoop, память, выделенная для файловой системы, ограничение памяти для хранения данных и размер буферов чтения / записи.

Откройте core-site.xml и добавьте следующие свойства между тегами <configuration> и </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000 </value>
   </property>
</configuration>

hdfs-site.xml

Файл hdfs-site.xml содержит такую ​​информацию, как значение данных репликации, путь namenode и путь datanode ваших локальных файловых систем. Это означает место, где вы хотите хранить инфраструктуру Hadoop.

Предположим следующие данные.

dfs.replication (data replication value) = 1

(In the following path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Откройте этот файл и добавьте следующие свойства между тегами <configuration>, </configuration> в этом файле.

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
   
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
   </property>
   
   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>
   </property>
</configuration>

Note - В приведенном выше файле все значения свойств определяются пользователем, и вы можете вносить изменения в соответствии с вашей инфраструктурой Hadoop.

yarn-site.xml

Этот файл используется для настройки пряжи в Hadoop. Откройте файл yarn-site.xml и добавьте следующие свойства между тегами <configuration>, </configuration> в этом файле.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

mapred-site.xml

Этот файл используется для указания, какой фреймворк MapReduce мы используем. По умолчанию Hadoop содержит шаблон yarn-site.xml. Прежде всего, вам нужно скопировать файл из mapred-site.xml.template в файл mapred-site.xml, используя следующую команду.

$ cp mapred-site.xml.template mapred-site.xml

Откройте файл mapred-site.xml и добавьте следующие свойства между тегами <configuration>, </configuration> в этом файле.

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Проверка установки Hadoop

Следующие шаги используются для проверки установки Hadoop.

Шаг 1. Настройка узла имени

Настройте namenode, используя команду «hdfs namenode -format» следующим образом.

$ cd ~
$ hdfs namenode -format

Ожидаемый результат выглядит следующим образом.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Шаг 2. Проверка dfs Hadoop

Следующая команда используется для запуска dfs. Выполнение этой команды запустит вашу файловую систему Hadoop.

$ start-dfs.sh

Ожидаемый результат выглядит следующим образом -

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Шаг 3: Проверка скрипта пряжи

Следующая команда используется для запуска сценария пряжи. Выполнение этой команды запустит ваши демоны пряжи.

$ start-yarn.sh

Ожидаемый результат выглядит следующим образом -

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting node manager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Шаг 4. Доступ к Hadoop в браузере

Номер порта по умолчанию для доступа к Hadoop - 50070. Используйте следующий URL-адрес, чтобы получить услуги Hadoop в своем браузере.

http://localhost:50070/

На следующем изображении изображен браузер Hadoop.

Шаг 5: проверьте все приложения для кластера

Номер порта по умолчанию для доступа ко всем приложениям кластера - 8088. Используйте следующий URL-адрес для посещения этой службы.

http://localhost:8088/

На следующем изображении показан браузер кластера Hadoop.

Шаг 3: загрузка Sqoop

Мы можем загрузить последнюю версию Sqoop по следующей ссылке. В этом руководстве мы используем версию 1.4.5, то естьsqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz.

Шаг 4: Установка Sqoop

Следующие команды используются для извлечения tar-файла Sqoop и перемещения его в каталог «/ usr / lib / sqoop».

$tar -xvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz
$ su
password:

# mv sqoop-1.4.4.bin__hadoop-2.0.4-alpha /usr/lib/sqoop
#exit

Шаг 5: настройка bashrc

Вам необходимо настроить среду Sqoop, добавив следующие строки в ~ /.bashrc файл -

#Sqoop
export SQOOP_HOME=/usr/lib/sqoop export PATH=$PATH:$SQOOP_HOME/bin

Следующая команда используется для выполнения ~ /.bashrc файл.

$ source ~/.bashrc

Шаг 6: настройка Sqoop

Чтобы настроить Sqoop с Hadoop, вам необходимо отредактировать sqoop-env.sh файл, который помещается в $SQOOP_HOME/confкаталог. Прежде всего, перенаправьте в каталог конфигурации Sqoop и скопируйте файл шаблона, используя следующую команду -

$ cd $SQOOP_HOME/conf
$ mv sqoop-env-template.sh sqoop-env.sh

открыто sqoop-env.sh и отредактируйте следующие строки -

export HADOOP_COMMON_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=/usr/local/hadoop

Шаг 7. Загрузите и настройте mysql-connector-java

Мы можем скачать mysql-connector-java-5.1.30.tar.gzфайл по следующей ссылке .

Следующие команды используются для извлечения архива mysql-connector-java и перемещения mysql-connector-java-5.1.30-bin.jar в каталог / usr / lib / sqoop / lib.

$ tar -zxf mysql-connector-java-5.1.30.tar.gz
$ su
password:

# cd mysql-connector-java-5.1.30
# mv mysql-connector-java-5.1.30-bin.jar /usr/lib/sqoop/lib

Шаг 8: проверка Sqoop

Следующая команда используется для проверки версии Sqoop.

$ cd $SQOOP_HOME/bin
$ sqoop-version

Ожидаемый результат -

14/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
Sqoop 1.4.5 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2014

Установка Sqoop завершена.

В этой главе описывается, как импортировать данные из базы данных MySQL в Hadoop HDFS. «Инструмент импорта» импортирует отдельные таблицы из СУБД в HDFS. Каждая строка в таблице рассматривается как запись в HDFS. Все записи хранятся как текстовые данные в текстовых файлах или как двоичные данные в файлах Avro и Sequence.

Синтаксис

Следующий синтаксис используется для импорта данных в HDFS.

$ sqoop import (generic-args) (import-args) 
$ sqoop-import (generic-args) (import-args)

пример

Давайте возьмем пример трех таблиц с именами emp, emp_add, и emp_contact, которые находятся в базе данных под названием userdb на сервере базы данных MySQL.

Ниже представлены три таблицы и их данные.

emp:

Я бы имя град зарплата отдел
1201 гопал управляющий делами 50 000 TP
1202 Manisha Корректор 50 000 TP
1203 Халил php dev 30 000 AC
1204 прасант php dev 30 000 AC
1204 Кранти админ 20 000 TP

emp_add:

Я бы hno улица город
1201 288A вгири младенец
1202 108I aoc втор-плохо
1203 144Z пгутта гид
1204 78B Старый город втор-плохо
1205 720X hitec втор-плохо

emp_contact:

Я бы phno Эл. адрес
1201 2356742 [email protected]
1202 1661663 [email protected]
1203 8887776 [email protected]
1204 9988774 [email protected]
1205 1231231 [email protected]

Импорт таблицы

Инструмент Sqoop 'import' используется для импорта табличных данных из таблицы в файловую систему Hadoop в виде текстового файла или двоичного файла.

Следующая команда используется для импорта emp таблица с сервера базы данных MySQL в HDFS.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp --m 1

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

14/12/22 15:24:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/12/22 15:24:56 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
14/12/22 15:24:56 INFO tool.CodeGenTool: Beginning code generation
14/12/22 15:24:58 INFO manager.SqlManager: Executing SQL statement: 
   SELECT t.* FROM `emp` AS t LIMIT 1
14/12/22 15:24:58 INFO manager.SqlManager: Executing SQL statement: 
   SELECT t.* FROM `emp` AS t LIMIT 1
14/12/22 15:24:58 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/hadoop
14/12/22 15:25:11 INFO orm.CompilationManager: Writing jar file: 
   /tmp/sqoop-hadoop/compile/cebe706d23ebb1fd99c1f063ad51ebd7/emp.jar
-----------------------------------------------------
-----------------------------------------------------
14/12/22 15:25:40 INFO mapreduce.Job: The url to track the job: 
   http://localhost:8088/proxy/application_1419242001831_0001/
14/12/22 15:26:45 INFO mapreduce.Job: Job job_1419242001831_0001 running in uber mode : 
   false
14/12/22 15:26:45 INFO mapreduce.Job: map 0% reduce 0%
14/12/22 15:28:08 INFO mapreduce.Job: map 100% reduce 0%
14/12/22 15:28:16 INFO mapreduce.Job: Job job_1419242001831_0001 completed successfully
-----------------------------------------------------
-----------------------------------------------------
14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Transferred 145 bytes in 177.5849 seconds 
   (0.8165 bytes/sec)
14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Retrieved 5 records.

Чтобы проверить импортированные данные в HDFS, используйте следующую команду.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*

Это показывает вам emp данные и поля таблицы разделяются запятой (,).

1201, gopal,    manager, 50000, TP
1202, manisha,  preader, 50000, TP
1203, kalil,    php dev, 30000, AC
1204, prasanth, php dev, 30000, AC
1205, kranthi,  admin,   20000, TP

Импорт в целевой каталог

Мы можем указать целевой каталог при импорте данных таблицы в HDFS с помощью инструмента импорта Sqoop.

Ниже приводится синтаксис для указания целевого каталога в качестве параметра команды импорта Sqoop.

--target-dir <new or exist directory in HDFS>

Следующая команда используется для импорта emp_add данные таблицы в каталог / queryresult.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp_add \
--m 1 \
--target-dir /queryresult

Следующая команда используется для проверки импортированных данных в форме каталога / queryresult. emp_add стол.

$ $HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-*

Он покажет вам данные таблицы emp_add с полями, разделенными запятыми (,).

1201, 288A, vgiri,   jublee
1202, 108I, aoc,     sec-bad
1203, 144Z, pgutta,  hyd
1204, 78B,  oldcity, sec-bad
1205, 720C, hitech,  sec-bad

Импортировать подмножество табличных данных

Мы можем импортировать подмножество таблицы, используя предложение where в инструменте импорта Sqoop. Он выполняет соответствующий запрос SQL на соответствующем сервере базы данных и сохраняет результат в целевом каталоге в HDFS.

Синтаксис для предложения where следующий.

--where <condition>

Следующая команда используется для импорта подмножества emp_addданные таблицы. Запрос подмножества предназначен для получения идентификатора и адреса сотрудника, который живет в городе Секундерабад.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp_add \
--m 1 \
--where “city =’sec-bad’” \
--target-dir /wherequery

Следующая команда используется для проверки импортированных данных в каталоге / wherequery из emp_add стол.

$ $HADOOP_HOME/bin/hadoop fs -cat /wherequery/part-m-*

Это покажет вам emp_add данные таблицы с полями, разделенными запятыми (,).

1202, 108I, aoc,     sec-bad
1204, 78B,  oldcity, sec-bad
1205, 720C, hitech,  sec-bad

Добавочный импорт

Инкрементный импорт - это метод, при котором в таблицу импортируются только недавно добавленные строки. Требуется добавить параметры «инкрементный», «контрольный столбец» и «последнее значение» для выполнения инкрементного импорта.

Следующий синтаксис используется для дополнительной опции в команде импорта Sqoop.

--incremental <mode>
--check-column <column name>
--last value <last check column value>

Предположим, что вновь добавленные данные в emp таблица выглядит следующим образом -

1206, satish p, grp des, 20000, GR

Следующая команда используется для выполнения инкрементного импорта в emp стол.

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp \
--m 1 \
--incremental append \
--check-column id \
-last value 1205

Следующая команда используется для проверки импортированных данных из emp таблицу в каталог HDFS emp /.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*

Это показывает вам emp данные таблицы с полями, разделенными запятыми (,).

1201, gopal,    manager, 50000, TP
1202, manisha,  preader, 50000, TP
1203, kalil,    php dev, 30000, AC
1204, prasanth, php dev, 30000, AC
1205, kranthi,  admin,   20000, TP
1206, satish p, grp des, 20000, GR

Следующая команда используется для просмотра измененных или вновь добавленных строк из emp стол.

$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*1

Он показывает вам недавно добавленные строки в emp таблица с полями, разделенными запятыми (,).

1206, satish p, grp des, 20000, GR

В этой главе описывается, как импортировать все таблицы с сервера базы данных СУБД в HDFS. Данные каждой таблицы хранятся в отдельном каталоге, а имя каталога совпадает с именем таблицы.

Синтаксис

Для импорта всех таблиц используется следующий синтаксис.

$ sqoop import-all-tables (generic-args) (import-args) 
$ sqoop-import-all-tables (generic-args) (import-args)

пример

Давайте рассмотрим пример импорта всех таблиц из userdbбаза данных. Список таблиц, которые база данныхuserdb содержит следующее.

+--------------------+
 |      Tables        |
 +--------------------+
 |      emp           |
 |      emp_add       |
 |      emp_contact   |
 +--------------------+

Следующая команда используется для импорта всех таблиц из userdb база данных.

$ sqoop import-all-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

Note - Если вы используете import-all-tables, обязательно, чтобы каждая таблица в этой базе данных имела поле первичного ключа.

Следующая команда используется для проверки всех данных таблицы в базе данных userdb в HDFS.

$ $HADOOP_HOME/bin/hadoop fs -ls

Он покажет вам список имен таблиц в базе данных userdb в виде каталогов.

Вывод

drwxr-xr-x - hadoop supergroup 0 2014-12-22 22:50 _sqoop
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:46 emp
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:50 emp_add
drwxr-xr-x - hadoop supergroup 0 2014-12-23 01:52 emp_contact

В этой главе описывается, как экспортировать данные обратно из HDFS в базу данных СУБД. Целевая таблица должна существовать в целевой базе данных. Файлы, которые вводятся в Sqoop, содержат записи, которые называются строками в таблице. Они считываются и анализируются в набор записей и разделяются указанным пользователем разделителем.

Операция по умолчанию - вставить всю запись из входных файлов в таблицу базы данных с помощью оператора INSERT. В режиме обновления Sqoop генерирует оператор UPDATE, который заменяет существующую запись в базе данных.

Синтаксис

Ниже приводится синтаксис команды экспорта.

$ sqoop export (generic-args) (export-args) 
$ sqoop-export (generic-args) (export-args)

пример

Давайте возьмем пример данных о сотрудниках в файле в HDFS. Данные о сотрудниках доступны вemp_dataфайл в каталоге emp / в HDFS. Вemp_data как следует.

1201, gopal,     manager, 50000, TP
1202, manisha,   preader, 50000, TP
1203, kalil,     php dev, 30000, AC
1204, prasanth,  php dev, 30000, AC
1205, kranthi,   admin,   20000, TP
1206, satish p,  grp des, 20000, GR

Обязательно, чтобы экспортируемая таблица была создана вручную и присутствовала в базе данных, из которой она должна быть экспортирована.

Следующий запрос используется для создания таблицы «employee» в командной строке mysql.

$ mysql
mysql> USE db;
mysql> CREATE TABLE employee ( 
   id INT NOT NULL PRIMARY KEY, 
   name VARCHAR(20), 
   deg VARCHAR(20),
   salary INT,
   dept VARCHAR(10));

Следующая команда используется для экспорта данных таблицы (которая находится в emp_data файл на HDFS) в таблицу сотрудников в базе данных db сервера базы данных Mysql.

$ sqoop export \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee \ 
--export-dir /emp/emp_data

Следующая команда используется для проверки таблицы в командной строке mysql.

mysql>select * from employee;

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

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | kalil        | php dev     | 30000             | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
+------+--------------+-------------+-------------------+--------+

В этой главе описывается, как создавать и поддерживать задания Sqoop. Задание Sqoop создает и сохраняет команды импорта и экспорта. Он определяет параметры для идентификации и вызова сохраненного задания. Этот повторный вызов или повторное выполнение используется в инкрементном импорте, который может импортировать обновленные строки из таблицы RDBMS в HDFS.

Синтаксис

Ниже приводится синтаксис для создания задания Sqoop.

$ sqoop job (generic-args) (job-args)
   [-- [subtool-name] (subtool-args)]

$ sqoop-job (generic-args) (job-args)
   [-- [subtool-name] (subtool-args)]

Создать задание (--create)

Здесь мы создаем вакансию с названием myjob, который может импортировать данные таблицы из таблицы СУБД в HDFS. Следующая команда используется для создания задания, которое импортирует данные изemployee стол в db базу данных в файл HDFS.

$ sqoop job --create myjob \
-- import \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee --m 1

Проверить работу (--list)

‘--list’аргумент используется для проверки сохраненных заданий. Следующая команда используется для проверки списка сохраненных заданий Sqoop.

$ sqoop job --list

Показывает список сохраненных работ.

Available jobs: 
   myjob

Проверить работу (--show)

‘--show’Аргумент используется для проверки или проверки конкретных работ и их деталей. Следующая команда и образец выходных данных используются для проверки задания с именемmyjob.

$ sqoop job --show myjob

Он показывает инструменты и их параметры, которые используются в myjob.

Job: myjob 
 Tool: import Options:
 ---------------------------- 
 direct.import = true
 codegen.input.delimiters.record = 0
 hdfs.append.dir = false 
 db.table = employee
 ...
 incremental.last.value = 1206
 ...

Выполнить задание (--exec)

‘--exec’опция используется для выполнения сохраненного задания. Следующая команда используется для выполнения сохраненного задания с именемmyjob.

$ sqoop job --exec myjob

Он показывает вам следующий результат.

10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation 
...

В этой главе описывается важность инструмента «кодогенерация». С точки зрения объектно-ориентированного приложения каждая таблица базы данных имеет один класс DAO, который содержит методы получения и установки для инициализации объектов. Этот инструмент (-codegen) автоматически генерирует класс DAO.

Он генерирует класс DAO в Java на основе структуры схемы таблицы. Определение Java создается как часть процесса импорта. Основное использование этого инструмента - проверить, не потерял ли Java код Java. В этом случае будет создана новая версия Java с разделителем по умолчанию между полями.

Синтаксис

Ниже приведен синтаксис команды создания кода Sqoop.

$ sqoop codegen (generic-args) (codegen-args) 
$ sqoop-codegen (generic-args) (codegen-args)

пример

Давайте рассмотрим пример, который генерирует код Java для emp стол в userdb база данных.

Следующая команда используется для выполнения данного примера.

$ sqoop codegen \
--connect jdbc:mysql://localhost/userdb \
--username root \ 
--table emp

Если команда выполняется успешно, на терминале будет произведен следующий вывод.

14/12/23 02:34:40 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/12/23 02:34:41 INFO tool.CodeGenTool: Beginning code generation
……………….
14/12/23 02:34:42 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/hadoop
Note: /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.java uses or 
   overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

14/12/23 02:34:47 INFO orm.CompilationManager: Writing jar file: 
   /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.jar

Проверка

Давайте посмотрим на результат. Путь, выделенный жирным шрифтом, - это место, где Java-кодempтаблица генерирует и сохраняет. Давайте проверим файлы в этом месте, используя следующие команды.

$ cd /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/
$ ls
emp.class
emp.jar
emp.java

Если вы хотите глубже проверить, сравните emp стол в userdb база данных и emp.java в следующем каталоге

/ tmp / sqoop-hadoop / compile / 9a300a1f94899df4a9b10f9935ed9f91 /.

В этой главе описывается, как использовать инструмент Sqoop 'eval'. Это позволяет пользователям выполнять определенные пользователем запросы к соответствующим серверам баз данных и просматривать результат в консоли. Таким образом, пользователь может ожидать импорта результирующих табличных данных. Используя eval, мы можем оценить любой тип SQL-запроса, который может быть оператором DDL или DML.

Синтаксис

Для команды Sqoop eval используется следующий синтаксис.

$ sqoop eval (generic-args) (eval-args) 
$ sqoop-eval (generic-args) (eval-args)

Выберите оценку запроса

Используя инструмент eval, мы можем оценить любой тип SQL-запроса. Давайте рассмотрим пример выбора ограниченных строк вemployee таблица dbбаза данных. Следующая команда используется для оценки данного примера с помощью SQL-запроса.

$ sqoop eval \
--connect jdbc:mysql://localhost/db \
--username root \ 
--query “SELECT * FROM employee LIMIT 3”

Если команда выполняется успешно, на терминале будет произведен следующий вывод.

+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | khalil       | php dev     | 30000             | AC     |
+------+--------------+-------------+-------------------+--------+

Вставить оценку запроса

Инструмент Sqoop eval может применяться как для моделирования, так и для определения операторов SQL. Это означает, что мы можем использовать eval и для операторов вставки. Следующая команда используется для вставки новой строки вemployee таблица db база данных.

$ sqoop eval \
--connect jdbc:mysql://localhost/db \
--username root \ 
-e “INSERT INTO employee VALUES(1207,‘Raju’,‘UI dev’,15000,‘TP’)”

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

Или же вы можете проверить таблицу сотрудников в консоли MySQL. Следующая команда используется для проверки строкemployee таблица db базу данных с помощью запроса select.

mysql>
mysql> use db;
mysql> SELECT * FROM employee;
+------+--------------+-------------+-------------------+--------+
| Id   | Name         | Designation | Salary            | Dept   |
+------+--------------+-------------+-------------------+--------+
| 1201 | gopal        | manager     | 50000             | TP     |
| 1202 | manisha      | preader     | 50000             | TP     |
| 1203 | khalil       | php dev     | 30000             | AC     |
| 1204 | prasanth     | php dev     | 30000             | AC     |
| 1205 | kranthi      | admin       | 20000             | TP     |
| 1206 | satish p     | grp des     | 20000             | GR     |
| 1207 | Raju         | UI dev      | 15000             | TP     |
+------+--------------+-------------+-------------------+--------+

В этой главе описывается, как вывести список баз данных с помощью Sqoop. Инструмент Sqoop list-databases анализирует и выполняет запрос SHOW DATABASES к серверу базы данных. После этого он перечисляет существующие базы данных на сервере.

Синтаксис

Следующий синтаксис используется для команды Sqoop list-databases.

$ sqoop list-databases (generic-args) (list-databases-args) 
$ sqoop-list-databases (generic-args) (list-databases-args)

Образец запроса

Следующая команда используется для вывода списка всех баз данных на сервере баз данных MySQL.

$ sqoop list-databases \
--connect jdbc:mysql://localhost/ \
--username root

Если команда выполняется успешно, она отобразит список баз данных на вашем сервере баз данных MySQL следующим образом.

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

mysql
test
userdb
db

В этой главе описывается, как вывести список таблиц конкретной базы данных на сервере баз данных MySQL с помощью Sqoop. Инструмент таблиц списков Sqoop анализирует и выполняет запрос SHOW TABLES для конкретной базы данных. После этого он перечисляет существующие таблицы в базе данных.

Синтаксис

Следующий синтаксис используется для команды Sqoop list-tables.

$ sqoop list-tables (generic-args) (list-tables-args) 
$ sqoop-list-tables (generic-args) (list-tables-args)

Образец запроса

Следующая команда используется для вывода списка всех таблиц в userdb база данных сервера баз данных MySQL.

$ sqoop list-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

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

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

emp
emp_add
emp_contact

В этой главе описывается, как вывести список таблиц конкретной базы данных на сервере баз данных MySQL с помощью Sqoop. Инструмент таблиц списков Sqoop анализирует и выполняет запрос SHOW TABLES для конкретной базы данных. После этого он перечисляет существующие таблицы в базе данных.

Синтаксис

Следующий синтаксис используется для команды Sqoop list-tables.

$ sqoop list-tables (generic-args) (list-tables-args) 
$ sqoop-list-tables (generic-args) (list-tables-args)

Образец запроса

Следующая команда используется для вывода списка всех таблиц в userdb база данных сервера баз данных MySQL.

$ sqoop list-tables \
--connect jdbc:mysql://localhost/userdb \
--username root

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

...
13/05/31 16:45:58 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

emp
emp_add
emp_contact