Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 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 o 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 ligar ao seu cluster. Edite o comando abaixo substituindo CLUSTERNAME pelo nome do cluster e digite o comando:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.netPara facilitar o uso, defina variáveis. Substitua
PASSWORD,MYSQLSERVEReMYDATABASEcom 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_CONNECTDigite o seguinte comando para ver uma lista de tabelas para o banco de dados especificado:
sqoop list-tables --connect $SERVER_DB_CONNECTPara exportar dados da tabela Hive
hivesampletablepara amobiledatatabela 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 hivesampletablePara 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
mobiledatatabela em SQL para owasbs:///tutorials/usesqoop/importeddatadiretó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 1Como 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 1Quando 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-00000Use beeline para verificar se a tabela foi criada no Hive.
Conectar
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 interruptor
-batchao executar inserções, o Sqoop executa 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.