Usar Apache Sqoop com o Hadoop no HDInsight
Saiba como usar o Apache Sqoop no HDInsight para importar e exportar dados entre o cluster do HDInsight e o banco de dados SQL do Azure.
Embora o Apache Hadoop seja uma opção natural para processar dados não estruturados e semi-estruturados, como logs e arquivos, também pode ser necessário processar dados estruturados armazenados em bancos de dados relacionais.
Apache Sqoop é uma ferramenta projetada para transferir dados entre clusters do Hadoop e bancos de dados relacionais. Você pode usá-lo para importar dados de um RDBMS (sistema de gerenciamento de banco de dados relacional), como SQL Server, MySQL ou Oracle para o HDFS (Sistema de Arquivos Distribuído) do Hadoop, transformar os dados no Hadoop com o MapReduce ou o 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 realizar a transferência de dados. Escolha um dos métodos de transferência de dados para esse ambiente na seção Executar trabalhos do Sqoop.
Para as versões do Sqoop compatíveis com os clusters do HDInsight, confira as Novidades nas versões de cluster fornecidas pelo HDInsight
Compreender o cenário
O cluster HDInsight é fornecido com alguns dados de exemplo. Você usa estas duas amostras:
- Um arquivo de log
Log4j
do Apache, 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 dispositivo móvel.Campo Tipo de dados clientid string querytime string market string deviceplatform string devicemake string devicemodel string state string country string querydwelltime duplo sessionid
BIGINT sessionpagevieworder BIGINT
Neste artigo, use esses dois conjuntos de dados para testar a importação e a exportação do Sqoop.
Configurar ambiente de teste
O cluster, o banco de dados SQL e outros objetos são criados no 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 a um banco de dados SQL. Se você quiser usar um contêiner particular para os arquivos bacpac, use os seguintes valores no modelo:
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
Observação
Importar usando um modelo ou o Portal do Azure é compatível apenas com a importação de um arquivo BACPAC do Armazenamento de Blobs do Azure.
Selecione a imagem a seguir para abrir o modelo do Resource Manager no portal do Azure.
Insira as seguintes propriedades:
Campo Valor Subscription Selecione sua assinatura do Azure na lista suspensa. Resource group Selecione seu grupo de recursos na lista suspensa ou crie um novo Local Selecione uma região na lista suspensa. Nome do cluster Insira um nome para o cluster Hadoop. Use somente letras minúsculas. Login do cluster no nome de usuário Mantenha o valor admin
pré-preenchido.Senha de login do cluster Digite uma senha. Nome de Usuário SSH Mantenha o valor sshuser
pré-preenchido.Senha SSH Digite uma senha. Entrada do Administrador do Sql Mantenha o valor sqluser
pré-preenchido.Senha de administrador do SQL Digite uma senha. Localização de _artifacts Use o valor padrão, a menos que queira usar seu próprio arquivo bacpac em um local diferente. Token SaS de localização de _artifacts Deixe em branco. Nome do arquivo bacpac Use o valor padrão, a menos que queira usar seu próprio arquivo bacpac. Local Use o valor padrão. O nome do servidor SQL lógico é
<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 as condições declarados acima.
Selecione Comprar. Você poderá ver um novo bloco intitulado Como enviar a implantação para a implantação do modelo. É preciso sobre cerca de 20 minutos para criar o cluster e o banco de dados SQL.
Executar trabalhos do Sqoop
O HDInsight pode executar trabalhos de Sqoop usando vários métodos. Use a tabela a seguir para decidir qual método é o melhor para você e siga o link para obter o passo-a-passo.
Use se quiser... | ...um shell interativo | ...Processamento emlotes | ... desse sistema operacional cliente |
---|---|---|---|
SSH | ? | ? | Linux, Unix, macOS X ou Windows |
SDK .NET para Hadoop | ? | Windows (por enquanto) | |
PowerShell do Azure | ? | Windows |
Limitações
- Exportação em massa — com o HDInsight baseado em Linux, o conector Sqoop usado para exportar dados ao Microsoft SQL Server ou ao banco de dados SQL do Azure, atualmente, não permite inserções em massa.
- Envio em lote — Com HDInsight baseado em Linux, ao usar o comutador
-batch
ao executar inserções, o Sqoop realizará várias inserções em vez de operações de inserção em lotes.
Próximas etapas
Você aprendeu como usar o Sqoop. Para obter mais informações, consulte:
- Usar o Apache Hive com o HDInsight
- Carregar dados no HDInsight: localize outros métodos de carregamento de dados no HDInsight/Armazenamento de Blob do Azure.
- Usar o Apache Sqoop para importar e exportar dados entre o Apache Hadoop no HDInsight e o Banco de Dados SQL