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.
Importar tabela para novo catálogo
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