Conectando o Sqoop a outros bancos de dadosdatastores

Mostra como um script sqoop pode ser usado para importar dados de vários datastores/bancos de dados.

Carregar Driver JDBC

Para acessar o banco de dados MS SQL Server, o Sqoop requer um driver JDBC adicional que pode ser baixado da Microsoft. As etapas a seguir instalarão o driver JDBC do MSSQL Server no 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/

Valide a conexão

Para verificar se a conexão com o servidor é válida:

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

Antes de fazer isso é recomendado verificar se a configuração do SqlServer permite acesso remoto à porta 1433.

Abra o Configuration Manager => SQL Server Network configuration => Protocols for MSSQLSERVER e verifique se o Protocol está habilitado e se o IP e a porta necessários estão habilitados e ativos.

Para importar dados do SQL Server para o 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
  • split-by – usado obrigatório se não houver chave primária
  • target-dir – novo catálogo, que ainda não existe

Importe os resultados de uma consulta de um banco de dados relacional para o HDFS:

A consulta pode ser usada em vez da tabela na operação de importação:

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'
  • onde $CONDITIONS - obrigatório mesmo se a condição não existir
  • split-by - obrigatório, especifica a coluna para a operação de divisão. Usado para dividir tarefas no trabalho MapReduce de importação

Importar dados diretamente para o Hive Warehouse

Os dados podem ser importados diretamente para o 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 dados do RDBMS para a tabela HBase

O seguinte comando sqoop será usado para importar os dados da tabela RDBMS para a tabela HBase, caso a tabela não exista no HBase ela criará uma nova tabela e importará os dados para esta tabela

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