Sqoop – ferramenta de transferência de dados de RDBMS para Hadoop Box

PARA IMPORTAR E EXPORTAR DADOS DE RDBMS (MYSQL, ORACLE, etc) PARA HDFS / HIVE / HBASE

Pré-requisito

  1. Apache Hadoop
  2. Apache Sqoop (compatível com a versão Hadoop)
  3. Apache Hive (opcional)
  4. Apache HBase (opcional)
  5. Apache HCatalog (opcional)
  6. Conector JDBC / ODBC

Para todos os RDBMS, o URL de conexão muda e todos os argumentos de linha de comando restantes permanecem os mesmos. Você precisa baixar o JAR do conector JDBC / ODBC específico e copiá-lo para $ SQOOP_HOME / lib


MySQL


Baixe mysql-connector-java.jar e coloque na pasta $ SQOOP_HOME / lib

cp mysql-connector-java-5.1.18-bin.jar /usr/local/hadoop/sqoop-1.4.3-cdh4.4.0/lib/

Esperando que você tenha dados nas tabelas MySQL.

Recuperando lista de bancos de dados disponíveis em MySQL a partir de SQOOP

sqoop list-databases --connect jdbc:mysql://localhost:3306/  --username root -P

Importação de MySQL para HDFS

Ter chave primária:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName

Sem chave primária:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName  -m 1

Importação de MySQL para Hive

Ter chave primária:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home path/to/hive_home

Sem chave primária:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home  path/to/hive_home -m 1

Importação de MySQL para HBase

Todas as colunas de importação:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName  --column-family hbase_table_col1 --hbase-create-table

HBase importa poucas colunas

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col1 --hbase-create-table

Para HBase com chave primária:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --column-family hbase_table_col1 --hbase-row-key column1 –hbase-create-table

Para Hbase sem chave primária:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col --hbase-row-key column1 --hbase-create-table

Exportar de HDFS para MySQL:

O mesmo para todos os Hive / HBase / HDFS: porque as tabelas do Hive nada mais são do que diretórios no HDFS. Então você está apenas exportando um diretório para MySQL

sqoop export --connect jdbc:mysql://localhost:3306/test_db --table tableName  --export-dir /user/hive/warehouse/tableName --username root --password password -m 1 --input-fields-terminated-by '01'

servidor SQL


URL de conexão:

sqoop import --connect 'jdbc:sqlserver://<IP(or)hostname>;username=dbuser;password=dbpasswd;database=<DB>' --table <table> --target-dir /path/to/hdfs/dir --split-by <KEY> -m 1

Baixe o conector do site da Microsoft

http://www.microsoft.com/en-us/download/confirmation.aspx?id=11774

Coloque-o em $ SQOOP_HOME / lib


Oráculo


URL de conexão:

sqoop import --connect "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=myhost)(port=1521))(connect_data=(service_name=myservice)))" 
--username USER --table SCHEMA.TABLE_NAME --hive-import --hive-table SCHEMA.TABLE_NAME
--num-mappers 1 --verbose -P

IBM DB2


Baixe o DB2Driver e coloque-o em $ SQOOP_HOME / lib

sqoop import --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/testdb --username db2user --db2pwd --table db2tbl --split-by tbl_primarykey --target-dir sqoopimports

sqoop
export --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/myDB --username db2user --password db2pwd --table db2tbl --export-dir /sqoop/dataFile.csv

Diferentes Strings de Conexão para Diferentes RDBMS


Versão do banco de dados – suporte direto? conecte correspondências de string

HSQLDB 1.8.0+ Não jdbc: hsqldb: * //

MySQL 5.0+ Sim jdbc: mysql: //

Oracle 10.2.0+ Sem jdbc: oracle: * //

PostgreSQL 8.3+ Sim (apenas importação) jdbc: postgresql: //