Usar o Apache Sqoop para importar e exportar dados entre o Apache Hadoop no HDInsight e o Banco de Dados SQL do Azure
Saiba como usar o Apache Sqoop para importar e exportar entre um cluster Apache Hadoop no Azure HDInsight e no Banco de Dados SQL do Azure ou no Microsoft SQL Server. As etapas neste documento usam o sqoop
comando diretamente do nó principal do cluster Hadoop. Use SSH para se conectar ao nó principal e executar os comandos neste documento. Este artigo é uma continuação de Usar o Apache Sqoop com Hadoop no HDInsight.
Pré-requisitos
Conclusão da configuração do ambiente de teste de Usar Apache Sqoop com Hadoop no HDInsight.
Um cliente SSH. Para obter mais informações, veja Ligar ao HDInsight (Apache Hadoop) através de SSH.
Familiaridade com Sqoop. Para obter mais informações, consulte Guia do usuário do Sqoop.
Configurar
Use o comando ssh para se conectar ao cluster. Edite o comando abaixo substituindo CLUSTERNAME pelo nome do cluster e digite o comando:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Para facilitar o uso, defina variáveis. Substitua
PASSWORD
,MYSQLSERVER
eMYDATABASE
com os valores relevantes e, em seguida, insira os comandos abaixo:export PASSWORD='PASSWORD' export SQL_SERVER="MYSQLSERVER" export DATABASE="MYDATABASE" export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD" export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DATABASE"
Exportação Sqoop
Do Hive para o SQL.
Para verificar se o Sqoop pode ver seu banco de dados, digite o comando abaixo em sua conexão SSH aberta. Este comando retorna uma lista de bancos de dados.
sqoop list-databases --connect $SERVER_CONNECT
Digite o seguinte comando para ver uma lista de tabelas para o banco de dados especificado:
sqoop list-tables --connect $SERVER_DB_CONNECT
Para exportar dados da tabela Hive
hivesampletable
para amobiledata
tabela em seu banco de dados, digite o comando abaixo em sua conexão SSH aberta:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
Para verificar se os dados foram exportados, use as seguintes consultas da sua conexão SSH para exibir os dados exportados:
sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)" sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
Importação Sqoop
Do SQL para o armazenamento do Azure.
Digite o comando abaixo em sua conexão SSH aberta para importar dados da
mobiledata
tabela em SQL para owasbs:///tutorials/usesqoop/importeddata
diretório no HDInsight. Os campos nos dados são separados por um caractere de tabulação e as linhas são terminadas por um caractere de nova linha.sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
Como alternativa, você também pode especificar uma tabela Hive:
sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --create-hive-table \ --hive-table mobiledata_imported2 \ --hive-import -m 1
Quando a importação for concluída, digite o seguinte comando em sua conexão SSH aberta para listar os dados no novo diretório:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
Use beeline para verificar se a tabela foi criada no Hive.
Ligar
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Execute cada consulta abaixo, uma de cada vez, e revise a saída:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Saia do beeline com
!exit
.
Limitações
Exportação em massa - Com o HDInsight baseado em Linux, o conector Sqoop usado para exportar dados para SQL não suporta inserções em massa.
Processamento em lote - Com o HDInsight baseado em Linux, ao usar o switch ao executar inserções, o
-batch
Sqoop faz várias inserções em vez de agrupar as operações de inserção.
Considerações importantes
O HDInsight e o SQL Server devem estar na mesma Rede Virtual do Azure.
Para obter um exemplo, consulte Como conectar o HDInsight ao seu documento de rede local.
Para obter mais informações sobre como usar o HDInsight com uma Rede Virtual do Azure, consulte como estender o HDInsight com o documento da Rede Virtual do Azure. Para obter mais informações sobre a Rede Virtual do Azure, consulte o documento Visão geral da Rede Virtual.
O SQL Server deve ser configurado para permitir a autenticação SQL. Para obter mais informações, consulte o documento Choose an Authentication Mode .
Talvez seja necessário configurar o SQL Server para aceitar conexões remotas.
Próximos passos
Agora você aprendeu a usar o Sqoop. Para saber mais, veja:
- Usar o Apache Oozie com o HDInsight: use a ação Sqoop em um fluxo de trabalho do Oozie.
- Analisar dados de atraso de voo usando o HDInsight: use a Consulta Interativa para analisar dados de atraso de voo e use o Sqoop para exportar dados para um banco de dados no Azure.
- Carregar dados para o HDInsight: encontre outros métodos para carregar dados no armazenamento de Blobs do HDInsight/Azure.