Conexión de Sqoop a otras bases de datosalmacenes de datos

Muestra cómo se podría usar un script sqoop para importar datos de varios almacenes de datos/bases de datos.

Cargar controlador JDBC

Para acceder a la base de datos de MS SQL Server, Sqoop requiere un controlador JDBC adicional que se puede descargar de Microsoft. Los siguientes pasos instalarán el controlador JDBC de MSSQL Server en Sqoop:

wget 'http://download.microsoft.com/download/0/2/A/02AAE597-3865-456C-AE7F-613F99F850A8/sqljdbc_4.0.2206.100_enu.tar.gz'

tar -xvzf sqljdbc_4

cp sqljdbc_4.0/enu/sqljdbc4.jar /usr/hdp/current/sqoop-server/lib/

Validar la conexión

Para comprobar que la conexión con el servidor es válida:

sqoop list-tables --connect "jdbc:sqlserver://<server_ip>:1433;database=<database_name>" 
                  --username <user_name>
                  --password <password>

Antes de hacer esto, se recomienda verificar si la configuración de SqlServer permite el acceso remoto al puerto 1433.

Abra Administrador de configuración => Configuración de red de SQL Server => Protocolos para MSSQLSERVER y verifique que el Protocolo esté habilitado y que la IP y el puerto necesarios estén habilitados y activos.

Para importar datos de SQL Server a Hadoop:

sqoop import --table TestTable
             --connect "jdbc:sqlserver://192.168.1.100:1433;database=Test_db"  
             --username user 
             --password password  
             --split-by id  
             --target-dir /user/test
  • dividido por: se usa obligatoriamente si no hay clave principal
  • target-dir – nuevo catálogo, que aún no existe

Importe los resultados de una consulta desde una base de datos relacional a HDFS:

La consulta se puede utilizar en lugar de la tabla en la operación de importación:

sqoop import --query 'select Id,Message from TestTable where $CONDITIONS' 
             --where 'id>100' 
             --connect "jdbc:sqlserver://192.168.1.100:1433;database=Test_db
             --username user 
             -–password password 
             --split-by id  
             --target-dir /user/test/ 
             --fields-terminated-by '\t'
  • donde $CONDICIONES - obligatorio incluso si la condición no existe
  • dividir por: obligatorio, especifica la columna para la operación de división. Se utiliza para dividir tareas en el trabajo de importación de MapReduce

Importar datos directamente a Hive Warehouse

Los datos se pueden importar directamente a Hive:

sqoop import --hive-import 
             --table EventLog 
             --connect "jdbc:sqlserver://192.168.1.99:1433;database=Test_db" 
             --username user 
             --password password 
             --split-by id 
             --fields-terminated-by '\t'

Importar datos de RDBMS a la tabla HBase

El siguiente comando sqoop se usará para importar los datos de la tabla RDBMS a la tabla HBase, si la tabla no existe en HBase, creará una nueva tabla e importará los datos a esta tabla

sqoop import \
        --query 'select emp_id, emp_name, emp_sal from employee where $CONDITIONS' \
        --connect "jdbc:sqlserver://192.168.1.99:1433;database=test_db" \
        --username username \
        -–password password \
        --hbase-create-table \
        --hbase-table employee_table \
        --hbase-row-key emp_id