Logotipo de Zephyrnet

Una guía completa sobre Apache Sqoop

Fecha:

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Introducción

Hola a todos,

En esta guía, hablaremos sobre la integración de Apache Sqove. En esta guía, repasaré Apache Sqoop en profundidad para que cada vez que

¿Qué es Apache Sqoop?

Apache Sqoop es una aplicación de interfaz de línea de comandos para transferir datos entre bases de datos relacionales y Hadoop. El proyecto Apache Sqoop se retiró en junio de 2021 y se trasladó a Apache Attic.

Hay dos tareas principales realizadas por sqoop.

Importación de Sqoop: Importe datos desde una fuente externa (MySQL/DB2) a HDFS.

Exportación Sqoop: exporte datos de HDFS a un destino externo (MySQL/DB2).

Esta guía utilizará MySQL como fuente externa e importará datos de la tabla de MySQL hdfs y viceversa para la exportación de sqoop.

Veamos cómo funciona la importación y exportación de sqoop:

Arquitectura de importación de Apache Sqoop

 

Fuente: dummies.com
  1. Trabajo de importación de Sqoop Lee datos de MySQL (RDBMS) y lo exporta a una ubicación HDFS.
    La siguiente tarea se realiza antes de leer datos de MySQL.
    Genera trabajos de MapReduce. Y lo interesante aquí es que solo los mapeadores se ejecutarán ya que no hay agregación, por lo que el reductor no se ejecutará.
    Genere el archivo Jar compilando el Código Maob.
    Luego, envíe el archivo jar y ejecute el comando de importación.
  2. Mientras tanto, Apache Sqoop también realizará algunas tareas.
    Decidirá cómo dividir los datos entre múltiples mapeadores según la clave principal o la división.
    Divide los datos entre los mapeadores.
    Luego, en función de los datos de muestra de una consulta SQL, tomará los metadatos y, utilizando esta información, extraerá la información de los metadatos de las columnas, el tipo de datos, etc.
  3. Escriba el código Java, compílelo y guárdelo como un archivo.jar.
  4. Elimine el directorio de destino si ya existe.
  5. Importa los datos.

Arquitectura de exportación de Apache Sqoop

 

apache sqoop
Fuente: slideshare.net

El proceso de exportación de Sqoop es más o menos similar. Solo se cambiarán el origen y el destino. Después de conectarse a la base de datos MySQL a la que se deben exportar los registros, ejecutará un comando de inserción JDBC para leer datos de HDFS y cargarlos en la tabla MySQL.

Configuremos una fuente (MySQL) para nuestra importación de sqoop y un destino para la exportación de sqoop.

¿Cómo conectarse desde Mysql?

Primero conectémonos a RDBMS (MySQL) y veamos qué tablas y bases de datos están disponibles, luego usemos el comando de importación sqoop para importar datos de MySQL a HDFS.

Para todos los ejercicios, estoy usando Cloudxlab.

En la terminal, ingrese su nombre de usuario y contraseña.

Escriba el siguiente comando.

mysql -h cxln2.c.thelab-240901.internal -u sqoopuser -p

Te pedirá una contraseña. Ingrese la contraseña de MySQL (puede obtenerla desde la página de inicio de Cloudxlab).

El comando anterior conectará Mysql.

Mostrar bases de datos;

Este comando mostrará todas las bases de datos disponibles en MySQL.

Utilice nombre_base_de_datos;

Esto lo redirigirá a la base de datos mencionada.

mostrar tablas;

Este comando mostrará todas las tablas que están disponibles en esta base de datos.

Ahora podemos ver todas las tablas y bases de datos MySQL.

Intentemos ahora conectarnos a este MySQL usando Sqoop. El siguiente comando conectará Sqoop a MySQL y podremos ver todas las bases de datos y tablas de MySQL.

Enumere todas las bases de datos de MySQL usando el comando sqoop.

sqoop list-databases --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306" --username sqoopuser -P

“Aquí, en lugar de-P, podemos usar la contraseña y podemos dar nuestra contraseña directamente, pero dar la contraseña en el comando no es una forma segura, por lo que estamos usando-P, por lo que solicitará ingresar la contraseña en tiempo de ejecución”.

Enumere todas las tablas de una base de datos MySQL usando el comando sqoop.

sqoop list-tables --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --nombre de usuario sqoopuser -P

El comando anterior mostrará todas las tablas de la base de datos retail_db.

Verifiquemos los datos que vamos a importar a través de Sqoop.

Muestre una muestra de datos de una tabla MySQL.

sqoop eval --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --query "seleccionar * del límite de estudiantes 10"

Bien, ahora estamos listos para importar los datos. Conocemos las bases de datos y las tablas MySQL, y también conocemos los datos que ingresaremos en HDFS.

 Importar datos por Apache Sqoop

La herramienta de importación importa tablas de RDBMS a HDFS. Cada registro en una tabla MySQL se considera un registro en HDFS. Durante la importación, podemos importar todas las tablas o algunas tablas de RDBMS. Estos datos se incorporarán como archivos en la ubicación de HDFS.

importación sqoop --conectar "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --nombre de usuario sqoopuser -P --table estudiante --m 1

Aquí, m 1 significa 1 mapeador, que funcionará. Podemos definir el número de mapeadores usando la opción –m. Por defecto, cuatro mapeadores trabajarán en paralelo. Estos 4 mapeadores dividirán los datos según la clave principal. Si no tenemos PK, también podemos usar split-by, por lo que en lugar de la columna de clave principal, sqoop puede dividir el trabajo entre los mapeadores según el valor de la columna split-by.

En el comando anterior, hemos dado solo un mapeador. No estamos especificando dónde queremos importar estos datos, por lo que sqoop, de forma predeterminada, importará estos datos en la ubicación de inicio de HDFS. Creará una carpeta con table_name en la ubicación de inicio de HDFS e importará estos datos.

Podemos verificar los datos usando el siguiente comando.

hadoop fs -ls /usuario/rahulpatidaroth5186/estudiante hadoop fs -cat /usuario/rahulpatidaroth5186/estudiante/part-m-00000
apache sqoop
Salida

Importación de Sqoop con configuraciones adicionales.

-No de Mappers-> 5 -split-by -> Dividirá 35 ids entre 5 mapeadores, es decir, 7 ids en un mapeador. target-dir (ahora importará datos a la ubicación especificada).
sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 5 --dividido por id --objetivo- dir /usuario/rahulpatidaroth5186/SqoopImportTest_2

Verifiquemos los datos en la ubicación de HDFS:

Podemos ver que los datos se han dividido entre 5 mapeadores, y hay 7 registros para cada mapeador.

Podemos usar la opción target-dir o la opción warehouse-dir en el comando sqoop para importar los datos. La única diferencia entre estos dos es que cada vez que definamos target-dir, importará directamente los datos en el directorio mencionado. Aún así, en el caso del almacén, creará una subcarpeta nombrada con el nombre de la tabla e importará los datos.

Importación de todas las tablas usando Sqoop Import

Sqoop también puede importar tablas desde una base de datos en particular.

El siguiente comando importará todas las tablas en el /usuario/rahulpatidaroth5186/todas_tablas directorio y creará subdirectorios con nombres de tablas en all_tables.

sqoop import-all-tables --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --as-sequencefile --warehouse-dir /user/rahulpatidaroth5186 /todas_las_tablas

Supongamos que necesitamos estos registros para depurar o compartir con otros equipos. En ese caso, sqoop ofrece la opción de almacenar registros en archivos en lugar de terminales.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --warehouse-dir /user/rahulpatidaroth5186/ SqoopImportTest_log 1>éxito.txt 2>fallo.txt

Cuando ejecutamos el comando anterior, creará dos archivos: failure.txt y success.txt. En lugar de mostrar todos los registros en la terminal, los redirigirá a fail.txt y todas las advertencias a success.txt.

Importación de filtros en Apache Sqoop

Sqoop también ofrece la posibilidad de importar datos en función de algunas condiciones de filtro. Podemos definir el filtro usando la cláusula where e ingerir solo los datos requeridos.

sqoop import --username sqoopuser -P --table student --m 1 --where "clase ='Tres'" --warehouse-dir /user/rahulpatidaroth5186/FilterResult
--conectar "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db"

Comando Hadoop para comprobar los datos:

hadoop fs -ls /user/rahulpatidaroth5186/FilterResult hadoop fs -cat /user/rahulpatidaroth5186/FilterResult/student/part-m-00000

Nota: Sqoop también crea un archivo vacío con el nombre _ÉXITO. Ignora esto _ÉXITO archivo, ya que indicará que el comando sqoop se completó con éxito.

Técnica de compresión de importación Apache Sqoop

Al importar los datos de sqoop en lugar de importar datos en un archivo de texto, también podemos usar varias técnicas de compresión y ahorrar espacio.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --compress --warehouse-dir /user /rahulpatidaroth5186/compressResult
hadoop fs -ls /usuario/rahulpatidaroth5186/compressResult/estudiante/
/usuario/rahulpatidaroth5186/compressResult/student/part-00000.gz

Por defecto, Sqoop importa datos con gz compresión. Podemos definir la técnica de compresión usando –códec de compresión

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --compression-codec BZip2Codec --warehouse- dir /usuario/rahulpatidaroth5186/compressResult
Hadoop fs -ls /usuario/rahulpatidaroth5186/compressResult/estudiante/
/usuario/rahulpatidaroth5186/compressResult/student/part-00000.bz2

Defina ColumnNames al importar datos usando Sqoop.

Digamos que quiero importar solo la identificación, el nombre y la clase de una tabla MySQL.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --columns id,name,class --where "class in ('Tres')" --m 1 --warehouse-dir /user/rahulpatidaroth5186/ColumnResults

Bien, ahora veamos los datos en la ubicación de HDFS.

hadoop fs -ls /user/rahulpatidaroth5186/ColumnResults
hadoop fs-gato /usuario/rahulpatidaroth5186/ResultadosColumna/estudiante/part-m-00000

Entonces, como discutimos, si definimos el número de mapeadores como más de uno, entonces divide los datos según la clave principal o los divide por columna, pero supongamos que no tenemos una clave principal y no estamos especificando dividido por columna. En ese caso, si especificamos el número de mapeadores como más de 1, arrojará un error ya que no se encuentra la clave principal. Si desea manejar estos escenarios, debe usar la propiedad –auto-reset-to-one-mapper, lo que significa que si PK está disponible, no tomará mapeadores según lo especificado por el –mapeadores numéricos propiedad, y si PK no está disponible, lo hará –reinicio-automático-a-un-mapeador.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --warehouse-dir /user/rahulpatidaroth5186/ autorreset --autoreset-to-one-mapper --num-mappers 8

Delimitador de importación de Apache Sqoop

Digamos que tenemos datos en una tabla con una columna como "dirección" y el valor de la dirección es "Bhopal, MP, India". En ese caso, cuando importemos estos datos, los importará a un archivo. Utilizará el delimitador como ',' por lo que cada vez que creamos una tabla de colmena a partir de este archivo, considerará que Bhopal, MP, India tiene 3 columnas de valores diferentes en lugar de una sola columna (dirección).

Necesitamos definir un delimitador al importar los datos para manejar este tipo de casos. Entonces Hive lo considera como el valor de 1 columna.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --fields-terminated-by '|' --líneas-terminadas-por ';' --warehouse-dir /user/rahulpatidaroth5186/SqoopImportDelimiter --autoreset-to-one-mapper --num-mappers 1

Comprobemos los datos en Hadoop

hadoop fs -ls /user/rahulpatidaroth5186/SqoopImportDelimiter/student hadoop fs -cat /user/rahulpatidaroth5186/SqoopImportDelimiter/student/part-m-00000

Integración Hive-Sqoop 

crear una tabla de colmena desde sqoop

sqoop crear tabla colmena 
--nombre de usuario sqoopuser 
-P --table student --hive-table student_sqoop --fields-terminated-by ',' --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db"

Nota: El comando anterior solo creará una tabla en la colmena, pero no cargará ningún dato en la tabla de la colmena.

Kay, ahora hemos creado una tabla de Hive a partir de datos de MySQL. Revisemos los datos en Hive.

Conexión de colmena:

colmena

Establecer base de datos:

uso por defecto;

De forma predeterminada, Hive no imprimirá el nombre de la columna. Por lo tanto, debemos habilitar la propiedad de encabezado de impresión.

establecer colmena.cli.print.header=true;

Seleccionar datos de la tabla.

seleccione * de student_sqoop;

Nota: También puede usar la siguiente opción al crear una tabla de colmena cuando sea necesario.

-escapado-por --encerrado-por --opcionalmente-encerrado-por --hive-drop-import-delims --hive-partition-key --hive-partition-value

Importación de Apache Sqoop con modo de adición

De forma predeterminada, Sqoop importará datos a un nuevo directorio. Si el directorio ya existe, entonces sqoop no importará ningún dato y mostrará un error de directorio que ya existe si su caso de uso tiene un requisito. Debe agregar datos en el mismo directorio y luego usar el modo de agregar mientras importa los datos.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --compression-codec BZip2Codec --warehouse- dir /usuario/rahulpatidaroth5186/compressResult --agregar

Verifiquemos los datos en Hadoop.

hadoop fs -ls /usuario/rahulpatidaroth5186/compressResult/estudiante

En la captura de pantalla anterior, podemos ver que hay un nuevo archivo disponible en la misma ubicación. los datos se han añadido en la misma ubicación.

También podemos sobrescribir los datos usando eliminar-objetivo-dir. Esta opción eliminará el directorio existente si existe y cargará nuevos datos.

importación sqoop
--connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --compression-codec BZip2Codec --warehouse-dir / usuario/rahulpatidaroth5186/compressResult --delete-target-dir

Validemos en la ubicación de HDFS.

hadoop fs -ls /usuario/rahulpatidaroth5186/compressResult/estudiante

De la captura de pantalla anterior, está claro que sqoop cargó nuevos datos y eliminó directorios antiguos.

Evaluación de Apache Sqoop

Las herramientas de evaluación de Sqoop se utilizan para ejecutar consultas SQL utilizando sqoop rápidamente. Podemos usar eval para insertar, así como para seleccionar los datos. Por favor vea el siguiente ejemplo.

sqoop eval --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P -e "seleccionar * del límite de estudiantes 5"

Bien, eso es todo sobre Sqoop Import cuando queremos una carga completa de datos.

Tenemos las siguientes opciones.

1. Podemos ingerir los datos en diferentes ubicaciones.

2. Podemos eliminar el directorio existente y volver a importar los datos.

Importación incremental de Apache Sqoop (carga delta)

Sin embargo, no siempre recopilará datos completos en el caso de uso en tiempo real.

Digamos que tiene una tabla MySQL en la que tenemos datos para transacciones diarias. Consideremos todos los días, tenemos transacciones de 1 lakh, por lo que para fin de mes, tendremos registros de 30L. Si ejecutamos un trabajo de sqoop todos los días, el día 30 ingerirá todas las transacciones de 30L. Aunque solo nos interesan los datos de 30 días, es decir, 1L, ¿por qué deberíamos ingerir registros innecesarios de 29L? Para manejar este tipo de escenarios, Sqoop brinda la opción de carga incremental, donde podemos definir múltiples opciones según los requisitos y solo podemos ingerir los datos requeridos.

Importantes argumentos/propiedades de importación incremental de Scoop:

–check-column (columna) :

Esta es la columna en la que debemos aplicar las condiciones de verificación sobre si necesitamos importar o no.

–incremental (modo) :

Esta propiedad se aplica cuando necesitamos definir la estrategia de importación de sqoop, es decir, si queremos solo registros nuevos o registros nuevos además de registros actualizados. Los valores legales para el modo incluyen agregar y última modificación.

–último valor (valor) :

Esta propiedad verificará el último valor de la columna de verificación; si el valor encontrado es mayor que el último valor en la columna de verificación, importará los datos.

1. Modo de adición (solo inserción):

El modo de adición es aplicable cuando sabemos que solo se insertarán datos nuevos en MySQL y no hay actualización en los datos existentes. Entonces, usando Append, solo podemos cargar los nuevos datos. En el modo Agregar, podemos usar la columna de verificación (id) y, en función de eso, cada vez que podemos ingerir los datos donde la identificación es mayor que el último valor.

El siguiente comando verificará la columna de identificación y luego verificará el último valor como el último valor es 10. Luego insertará los datos.

importación sqoop --conectar "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --nombre de usuario sqoopuser -P --table estudiante --m 1

Validemos los datos.

hadoop fs -ls /usuario/rahulpatidaroth5186/IncremantalAppend/estudiante/
hadoop fs -cat /user/rahulpatidaroth5186/IncremantalAppend/student/part-m-00000

2. Usando el último valor modificado (insertar + Actualizar):

En este caso, si observamos alguna actualización en el valor existente, entonces usando última modificación podemos buscar las filas e ingerirlas en hdfs.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --warehouse-dir /user/rahulpatidaroth5186/ IncremantalAppend --incremental lastmodified --check-column enroll_date --last-value '2022-01-01' --append

El comando anterior ingerirá los datos que se han actualizado o insertado después 2022-01-01.

Consideremos un escenario en el que tenemos una identificación como 111 y la inscripción_fecha es 2000-01-01. Así que esta entrada ya está disponible en mi hdfs. Ahora el 2022-01-02. He actualizado algunos detalles para la identificación 111, por lo que el comando sqoop anterior incorporará esta identificación una vez más, ya que estamos usando agregar, por lo que ambas entradas estarán disponibles en hdfs y crearán un problema de duplicación de datos. En lugar de agregar estos escenarios, debemos actualizar esta clave con la última fecha, para que no haya duplicados en hdfs.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --warehouse-dir /user/rahulpatidaroth5186/ IncremantalAppend --incremental lastmodified --check-column enroll_date --last-value '2022-01-01' --merge-key id

El comando anterior actualizará la entrada anterior con los últimos cambios y sobrescribirá los valores de id 111.

Entonces, todo se trataba de la importación de sqoop, tanto para la carga histórica (carga completa) como para la carga delta (carga incremental).

Ahora analicemos la exportación de Sqoop.

Exportación de Apache Sqoop

El comando de exportación sqoop se usa para insertar datos de HDFS a MySQL (RDBMS). La tabla debe estar disponible en el RDBMS.

Crear declaración de tabla

CREAR TABLA retail_db.STUDENT_SQOOP_EXPORT 
(ID INT NO NULO CLAVE PRINCIPAL, 
NOMBRE VARCHAR(20), CLASE VARCHAR(20),MARK INT, 
GÉNERO VARCHAR(10));

Comando de exportación de Sqoop

exportación de sqoop --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser --P --table STUDENT_SQOOP_EXPORT --export-dir /user/rahulpatidaroth5186/IncremantalAppend/student /parte-m-00000

Crear tabla mysql

CREAR TABLA retail_db.STUDENT_SQOOP_EXPORT (
ID INT NO NULO CLAVE PRINCIPAL, NOMBRE VARCHAR(20), CLASE VARCHAR(20),MARK INT,
GÉNERO VARCHAR(10));

Ejecutar exportación de Sqoop

Una vez que se complete la exportación de Sqoop, intente seleccionar datos de la tabla MySQL nuevamente.

seleccione * de retail_db.STUDENT_SQOOP_EXPORT;

Trabajo Apache Sqoop

El trabajo de Sqoop crea y guarda los comandos de importación y exportación. Podemos crear y guardar trabajos de Sqoop de la misma manera que nuestro Java normal o cualquier otro trabajo de programación y reutilizarlos/ejecutarlos cuando sea necesario.

Configuraciones importantes de trabajo de Sqoop

--crear trabajo-id>: crea un nuevo trabajo guardado con el identificador de trabajo (nombre) especificado.
--eliminar "identificación del trabajo": Eliminar un trabajo guardado de una ID de trabajo determinada.
--lista: enumerar todos los trabajos guardados.
--exec: Ejecutar un trabajo guardado.
--mostrar id-trabajo>: Muestra los parámetros de un trabajo guardado previamente.

Vamos a crear un trabajo de importación de sqoop con el nombre sqoop_import_job_mysql, que se conectará a MySQL e importará datos de MySQL y los ingerirá en la ubicación de HDFS.

Crear trabajo de Sqoop:

trabajo sqoop --create sqoop_import_job_mysql -- import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table STUDENT_SQOOP_EXPORT --m 1 --warehouse -dir /usuario/rahulpatidaroth5186/ESTUDIANTE_SQOOP_EXPORTAR

Mostrar lista de trabajos:

El siguiente comando mostrará todos los trabajos que hemos creado.

trabajo sqoop --lista

Ejecutar trabajo de Sqoop:

trabajo sqoop --exec 
trabajo sqoop --exec sqoop_import_job_mysql

Eliminar un trabajo de Sqoop:

trabajo sqoop --eliminar  
trabajo sqoop --delete sqoop_import_job

Archivo de contraseña de Sqoop:

También podemos crear un archivo de contraseñas y almacenar la contraseña en el archivo. También podemos pasar la ubicación del archivo de contraseña en el comando sqoop, de modo que en lugar de ingresar la contraseña en la terminal, sqoop obtendrá la contraseña del archivo y ejecutará el trabajo.

echo -n "contraseña" pass_file sqoop job --create sqoop_import_job_mysql -- import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -password-file file: ///home/rahulpatidaroth5186/pass_file --table STUDENT_SQOOP_EXPORT --m 1 --warehouse-dir /user/rahulpatidaroth5186/STUDENT_SQOOP_EXPORT1

Analicemos algunos conceptos más importantes:

Insertar consulta

La tabla de estudiantes de la base de datos minorista recibirá una nueva fila cuando se ejecute el siguiente comando. sqoop eval

--connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P -e "INSERTAR EN LOS VALORES de los estudiantes (1000, 'RAHULP', 'BTECH', 90, 'MASCULINO')"

Verifique los datos en Mysql.

seleccione * del estudiante donde id='1000';

Importaciones de consultas de formato libre

Sqoop tiene la capacidad de importar el resultado de cualquier consulta SQL. Puede especificar una instrucción SQL con el parámetro —query en lugar de los argumentos —table, —columns y —where.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --query "SELECT * FROM retail_db.student DONDE estudiante.id='35' Y $CONDICIONES" --m 1 --target-dir /user/rahulpatidaroth5186/queryresult

Compruebe los datos en el Directorio de destino:

hadoop fs -ls /user/rahulpatidaroth5186/queryresult/ hadoop fs -cat /user/rahulpatidaroth5186/queryresult/part-m-00000

ayuda

La herramienta de ayuda de Sqoop mostrará todas las herramientas que están disponibles en Sqoop.

versión sqoop

La versión de sqoop mostrará la versión de sqoop que estamos usando.

Ejecutar un script de Apache Sqoop desde un archivo

Además, Sqoop ofrece la posibilidad de ejecutar un comando desde un archivo. El comando sqoop se puede escribir en un solo archivo txt y, cuando sea necesario, se puede llamar simplemente con el argumento —options-file.

1. Cree un archivo import.txt localmente y agregue el siguiente contenido.

sqoop import --connect "jdbc:mysql://cxln2.c.thelab-240901.internal:3306/retail_db" --username sqoopuser -P --table student --m 1 --warehouse-dir /user/rahulpatidaroth5186/ ReadCommandfromfile

2. Ahora ejecute el comando sqoop llamando a este archivo import.txt.

Sqoop --archivo de opciones /home/rahulpatidaroth5186/import.txt

Conclusión

Apache Sqoop es una tecnología de ingesta y migración de datos para exportar e importar datos de fuentes externas. En este artículo, cubrimos todos los conceptos esenciales de Apache Sqoop. Los siguientes son los puntos clave del artículo:

Eso es todo lo que hay que decir sobre Apache Sqoop para que pueda comenzar su aventura de migración e ingesta de datos. Espero que la guía haya sido útil. Puede hacer clic en el aplauso para que la gente sepa que le gustó leer esta instrucción.

 Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img