Partilhar via


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.

  1. Selecione a imagem a seguir para abrir o modelo do Gerenciador de Recursos no portal do Azure.

    Botão Implantar no Azure para novo cluster

  2. 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 adminpré-preenchido .
    Palavra-passe de início de sessão no cluster Introduza uma palavra-passe.
    Nome de utilizador SSH Mantenha o valor sshuserpré-preenchido .
    Palavra-passe SSH Introduza uma palavra-passe.
    Login do administrador do SQL Mantenha o valor sqluserpré-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.

  3. Selecione Concordo com os termos e condições descritos acima.

  4. 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: