PARA IMPORTAR E EXPORTAR DADOS DE RDBMS (MYSQL, ORACLE, etc) PARA HDFS / HIVE / HBASE
Pré-requisito
- Apache Hadoop
- Apache Sqoop (compatível com a versão Hadoop)
- Apache Hive (opcional)
- Apache HBase (opcional)
- Apache HCatalog (opcional)
- 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: //