Importar y exportar datos usando SQOOP

SQOOP se utiliza básicamente para transferir datos desde bases de datos relacionales como MySQL, Oracle a almacenes de datos como Hadoop HDFS (Hadoop File System). Por lo tanto, cuando se transfieren datos de una base de datos relacional a HDFS , decimos que estamos importando datos. De lo contrario, cuando transferimos datos de HDFS a bases de datos relacionales, decimos que estamos exportando datos.

Nota: para importar o exportar, el orden de las columnas tanto en MySQL como en Hive debe ser el mismo.

Importación de datos de MySQL a HDFS

Para almacenar datos en HDFS, utilizamos Apache Hive, que proporciona una interfaz similar a SQL entre el usuario y el sistema de archivos distribuidos de Hadoop (HDFS) que integra Hadoop. Realizamos los siguientes pasos:

Paso 1: Iniciar sesión en MySQL

mysql -u root -pcloudera
Iniciar sesión en MySQL

Iniciar sesión en MySQL

Paso 2: Cree una base de datos y una tabla e inserte datos.

crear bases de datos geeksforgeeeks;
crear tabla geeksforgeeeks.geeksforgeeks(nombre_autor varchar(65), número_total_de_artículos int, número_teléfono int, dirección varchar(65));
insertar en los valores de geeksforgeeks («Rohan», 10,123456789, «Lucknow»);

Creando una base de datos

Nombre de la base de datos: geeksforgeeeks y Nombre de la tabla: geeksforgeeks

Paso 3: Cree una base de datos y una tabla en la colmena donde se deben importar los datos.

crear tabla geeks_hive_table(name string, total_articles int, phone_no int, address string) formato de fila campos delimitados terminados por ‘,’;

Crear una base de datos y una tabla en la colmena

Base de datos de Hive: geeks_hive y tabla de Hive: geeks_hive_table

Paso 4: Ejecute debajo del comando de importación en Hadoop.

sqoop import --connect \
jdbc:mysql://127.0.0.1:3306/database_name_in_mysql \
 --username root --password cloudera \
 --table table_name_in_mysql \
 --hive-import --hive-table database_name_in_hive.table_name_in_hive \
 --m 1 
comando de importación en Hadoop

Comando SQOOP para importar datos

En el código anterior, se deben tener en cuenta las siguientes cosas.

  • 127.0.0.1 es la dirección IP del host local.
  • 3306 es el número de puerto para MySQL.
  • m es el número de mapeadores

Paso 5: registre la sección si los datos se importaron correctamente o no.

Datos importados a Hive con éxito.

Exportación de datos de HDFS a MySQL

Para exportar datos a MySQL desde HDFS, realice los siguientes pasos: 

Paso 1: Cree una base de datos y una tabla en la colmena.

crear tabla hive_table_export(string de nombre, string de empresa, int de teléfono, int de edad) campos delimitados en formato de fila terminados en ‘,’;

Base de datos de Hive: hive_export y tabla de Hive: hive_table_export 

Paso 2: Inserte datos en la tabla Hive.

insert into hive_table_export values("Ritik","Amazon",234567891,35);

Datos en la tabla de Hive

Paso 3: cree una base de datos y una tabla en MySQL en la que se deben exportar los datos.

Base de datos MySQL: mysql_export y tabla MySQL: mysql_table_export

Paso 4: Ejecute el siguiente comando en Hadoop.

sqoop export --connect \
jdbc:mysql://127.0.0.1:3306/database_name_in_mysql \
 --table table_name_in_mysql \
 --username root --password cloudera \
 --export-dir /user/hive/warehouse/hive_database_name.db/table_name_in_hive \
 --m 1 \
 -- driver com.mysql.jdbc.Driver
 --input-fields-terminated-by ','

Comando SQOOP para exportar datos

En el código anterior, se deben tener en cuenta las siguientes cosas.

  • 127.0.0.1 es la dirección IP del host local.
  • 3306 es el número de puerto para MySQL.
  • En el caso de exportar datos, se debe especificar la ruta completa a la tabla
  • m es el número de mapeadores

Paso 5: registre MySQL si los datos se exportaron correctamente o no.

Datos exportados a MySQL con éxito

Publicación traducida automáticamente

Artículo escrito por rohanchopra96 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *