Utilizar o Apache Sqoop com o Hadoop no HDInsight
Saiba como usar o Apache Sqoop no HDInsight para importar e exportar dados entre um cluster HDInsight e o Banco de Dados SQL do Azure.
Embora o Apache Hadoop seja uma escolha natural para o processamento de dados não estruturados e semiestruturados, como logs e arquivos, também pode haver a necessidade de processar dados estruturados armazenados em bancos de dados relacionais.
O Apache Sqoop é uma ferramenta projetada para transferir dados entre clusters Hadoop e bancos de dados relacionais. Você pode usá-lo para importar dados de um sistema de gerenciamento de banco de dados relacional (RDBMS), como SQL Server, MySQL ou Oracle, para o sistema de arquivos distribuídos Hadoop (HDFS), transformar os dados no Hadoop com MapReduce ou Apache Hive e, em seguida, exportar os dados de volta para um RDBMS. Neste artigo, você está usando o Banco de Dados SQL do Azure para seu banco de dados relacional.
Importante
Este artigo configura um ambiente de teste para executar a transferência de dados. Em seguida, você escolhe um método de transferência de dados para esse ambiente de um dos métodos na seção Executar trabalhos Sqoop.
Para versões do Sqoop suportadas em clusters HDInsight, consulte O que há de novo nas versões de cluster fornecidas pelo HDInsight?
Compreender o cenário
O cluster HDInsight vem com alguns dados de exemplo. Use os dois exemplos a seguir:
- Um arquivo de log do Apache
Log4j
, que está localizado em/example/data/sample.log
. Os seguintes logs são extraídos do arquivo:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
Uma tabela do Hive chamada
hivesampletable
, que faz referência ao arquivo de dados localizado em/hive/warehouse/hivesampletable
. A tabela contém alguns dados de dispositivos móveis.Campo Tipo de dados ID do cliente string querytime string mercado string plataforma de dispositivo string devicemake string modelo do dispositivo string state string país/região string querydwelltime duplo sessionid
bigint sessionpagevieworder bigint
Neste artigo, você usa esses dois conjuntos de dados para testar a importação e exportação do Sqoop.
Configurar ambiente de teste
O cluster, o banco de dados SQL e outros objetos são criados por meio do portal do Azure usando um modelo do Azure Resource Manager. O modelo pode ser encontrado em Modelos de Início Rápido do Azure. O modelo do Resource Manager chama um pacote bacpac para implantar os esquemas de tabela em um banco de dados SQL. Se você quiser usar um contêiner privado para os arquivos bacpac, use os seguintes valores no modelo:
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
Nota
A importação usando um modelo ou o portal do Azure só dá suporte à importação de um arquivo BACPAC do armazenamento de blob do Azure.
Selecione a imagem a seguir para abrir o modelo do Gerenciador de Recursos no portal do Azure.
Introduza as seguintes propriedades:
Campo Value Subscrição Selecione sua assinatura do Azure na lista suspensa. Grupo de recursos Selecione seu grupo de recursos na lista suspensa ou crie um novo Location Selecione uma região na lista suspensa. Nome do Cluster Introduza um nome para o cluster do Hadoop. Use apenas letras minúsculas. Nome de utilizador de início de sessão em cluster Mantenha o valor admin
pré-preenchido .Palavra-passe de início de sessão no cluster Introduza uma palavra-passe. Nome de utilizador SSH Mantenha o valor sshuser
pré-preenchido .Palavra-passe SSH Introduza uma palavra-passe. Login do administrador do SQL Mantenha o valor sqluser
pré-preenchido .Senha de administrador do SQL Introduza uma palavra-passe. Localização _artifacts Use o valor padrão, a menos que você queira usar seu próprio arquivo bacpac em um local diferente. _artifacts Localização Sas Token Deixe em branco. Nome do arquivo Bacpac Use o valor padrão, a menos que você queira usar seu próprio arquivo bacpac. Location Utilize o valor predefinido. O nome lógico do servidor SQL é
<ClusterName>dbserver
. O nome do banco de dados é<ClusterName>db
. O nome da conta de armazenamento padrão ée6qhezrh2pdqu
.Selecione Concordo com os termos e condições descritos acima.
Selecione Comprar. Você verá um novo bloco intitulado Enviando implantação para implantação de modelo. A criação do cluster e da SQL Database demora cerca de 20 minutos.
Executar trabalhos do Sqoop
O HDInsight pode executar trabalhos do Sqoop usando vários métodos. Use a tabela a seguir para decidir qual método é certo para você e, em seguida, siga o link para uma explicação passo a passo.
Use isso se quiser... | ... um shell interativo | ... processamento em lote | ... a partir deste sistema operativo cliente |
---|---|---|---|
CHS | ? | ? | Linux, Unix, macOS X ou Windows |
.NET SDK para Hadoop | ? | Windows (por enquanto) | |
Azure PowerShell | ? | Windows |
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 atualmente não oferece suporte a inserções em massa.
- Processamento em lote - Com o HDInsight baseado em Linux, ao usar o switch ao executar inserções, o
-batch
Sqoop executa várias inserções em vez de agrupar as operações de inserção.
Próximos passos
Agora você aprendeu a usar o Sqoop. Para saber mais, veja:
- Usar o Apache Hive com o HDInsight
- Carregar dados para o HDInsight: encontre outros métodos para carregar dados no armazenamento de Blobs do HDInsight/Azure.
- Utilizar o Apache Sqoop para importar e exportar dados entre o Apache Hadoop no HDInsight e a Base de Dados SQL