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 Curl para executar trabalhos do Apache Sqoop em um cluster Apache Hadoop no HDInsight. Este artigo demonstra como exportar dados do Armazenamento do Azure e importá-los para um banco de dados do SQL Server usando Curl. Este artigo é uma continuação de Usar o Apache Sqoop com Hadoop no HDInsight.
O Curl é usado para demonstrar como você pode interagir com o HDInsight usando solicitações HTTP brutas para executar, monitorar e recuperar os resultados de trabalhos do Sqoop. Isso funciona usando a API REST do WebHCat (anteriormente conhecida como Templeton) fornecida pelo cluster HDInsight.
Pré-requisitos
Conclusão da tarefa Configurar ambiente de teste de Usar Apache Sqoop com Hadoop no HDInsight.
Um cliente para consultar o Banco de Dados SQL do Azure. Considere usar o SQL Server Management Studio ou o Visual Studio Code.
Curl. Curl é uma ferramenta para transferir dados de ou para um cluster HDInsight.
JQ. O utilitário jq é usado para processar os dados JSON retornados de solicitações REST.
Familiaridade com Sqoop. Para obter mais informações, consulte Guia do usuário do Sqoop.
Enviar trabalhos do Apache Sqoop usando Curl
Use o Curl para exportar dados com os trabalhos do Apache Sqoop a partir do armazenamento do Azure para o SQL Server.
Observação
Ao usar o Curl ou qualquer outra comunicação REST com o WebHCat, você deve autenticar as solicitações fornecendo o nome de usuário e a senha para o administrador do cluster HDInsight. Você também deve usar o nome do cluster como parte do URI (Uniform Resource Identifier) usado para enviar as solicitações ao servidor.
Para os comandos nesta seção, substitua USERNAME pelo usuário para autenticar no cluster e substitua PASSWORD pela senha da conta de usuário. Substitua CLUSTERNAME pelo nome do cluster.
A API de REST está protegida por autenticação básica. Você sempre deve fazer solicitações usando HTTP seguro (HTTPS) para ajudar a garantir que suas credenciais sejam enviadas com segurança para o servidor.
Para facilitar o uso, defina as variáveis abaixo. Este exemplo é baseado em um ambiente Windows, revise conforme necessário para seu ambiente.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluserEm uma linha de comando, use o seguinte comando para verificar se você pode se conectar ao cluster HDInsight:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusDeverá receber uma resposta semelhante à seguinte:
{"status":"ok","version":"v1"}Use o seguinte para submeter um trabalho do Sqoop:
curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoopOs parâmetros utilizados neste comando são os seguintes:
-d - Como
-Gnão é usado, o padrão da solicitação é o método POST.-despecifica os valores de dados que são enviados com a solicitação.user.name - O usuário que está executando o comando.
command - O comando do Sqoop a ser executado.
statusdir - O diretório no qual o status deste trabalho será gravado.
Este comando retornará um ID de trabalho que pode ser usado para verificar o status do trabalho.
{"id":"job_1415651640909_0026"}
Para verificar o status do trabalho, use o seguinte comando. Substitua
JOBIDpelo valor retornado na etapa anterior. Por exemplo, se o valor de retorno fosse{"id":"job_1415651640909_0026"}, entãoJOBIDseriajob_1415651640909_0026. Revise a localização dejqconforme necessário.set JOBID=job_1415651640909_0026 curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.stateSe o trabalho tiver terminado, o estado será CONCLUÍDO COM SUCESSO.
Observação
Essa solicitação Curl retorna um documento JSON (JavaScript Object Notation) com informações sobre o trabalho; jq é usado para recuperar apenas o valor do estado.
Depois que o estado do trabalho for alterado para SUCCEEDED, você poderá recuperar os resultados do trabalho do armazenamento de Blob do Azure. O
statusdirparâmetro passado com a consulta contém o local do arquivo de saída, neste caso,wasb:///example/data/sqoop/curl. Este endereço armazena a saída do trabalho no diretórioexample/data/sqoop/curlno contêiner de armazenamento padrão usado pelo cluster HDInsight.Você pode usar o portal do Azure para acessar blobs stderr e stdout.
Para verificar se os dados foram exportados, use as seguintes consultas do cliente SQL para exibir os dados exportados:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
Limitações
- Exportação em massa - Com o HDInsight baseado em Linux, o conector Sqoop usado para exportar dados para o Microsoft SQL Server ou o Banco de Dados SQL do Azure atualmente não oferece suporte a inserções em massa.
- Processamento em lote - Com o HDInsight baseado em Linux, ao usar o
-batchswitch ao executar inserções, o Sqoop realizará várias inserções em vez de agrupar as operações de inserção.
Resumo
Conforme demonstrado neste documento, você pode usar uma solicitação HTTP bruta para executar, monitorar e exibir os resultados de trabalhos Sqoop em seu cluster HDInsight.
Para obter mais informações sobre a interface REST usada neste artigo, consulte o guia da API REST do Apache Sqoop.
Próximos passos
Usar o Apache Sqoop com o Apache Hadoop no HDInsight
Para outros artigos do HDInsight que envolvam ondulação: