Partilhar via


Usar o Apache Pig com o Apache Hadoop no HDInsight

Saiba como usar o Apache Pig com o HDInsight.

Apache Pig é uma plataforma para criar programas para Apache Hadoop usando uma linguagem processual conhecida como Pig Latin. O Pig é uma alternativa ao Java para criar soluções MapReduce e está incluído no Azure HDInsight. Use a tabela a seguir para descobrir as várias maneiras pelas quais o Pig pode ser usado com o HDInsight:

Por que usar o Apache Pig

Um dos desafios de processar dados usando o MapReduce no Hadoop é implementar sua lógica de processamento usando apenas um mapa e uma função de redução. Para processamento complexo, muitas vezes você tem que dividir o processamento em várias operações MapReduce que são encadeadas para alcançar o resultado desejado.

O Pig permite definir o processamento como uma série de transformações pelas quais os dados fluem para produzir a saída desejada.

A linguagem latina Pig permite descrever o fluxo de dados da entrada bruta, através de uma ou mais transformações, para produzir a saída desejada. Os programas Pig Latin seguem este padrão geral:

  • Carregar: Leia os dados a serem manipulados do sistema de arquivos.

  • Transformar: manipular os dados.

  • Despejar ou armazenar: envia dados para a tela ou armazena-os para processamento.

Funções definidas pelo utilizador

O Pig Latin também suporta funções definidas pelo usuário (UDF), o que permite invocar componentes externos que implementam uma lógica difícil de modelar no Pig Latin.

Para obter mais informações sobre o Pig Latin, consulte Pig Latin Reference Manual 1 e Pig Latin Reference Manual 2.

Dados de exemplo

O HDInsight fornece vários conjuntos de dados de exemplo, que são armazenados nos /example/data diretórios e /HdiSamples . Esses diretórios estão no armazenamento padrão do cluster. O exemplo Pig neste documento usa o arquivo Log4j de /example/data/sample.log.

Cada log dentro do arquivo consiste em uma linha de campos que contém um [LOG LEVEL] campo para mostrar o tipo e a gravidade, por exemplo:

2012-02-03 20:26:41 SampleClass3 [ERROR] verbose detail for id 1527353937

No exemplo anterior, o nível de log é ERROR.

Nota

Você também pode gerar um arquivo log4j usando a ferramenta de registro Apache Log4j e, em seguida, carregar esse arquivo para o seu blob. Consulte Carregar dados no HDInsight para obter instruções. Para obter mais informações sobre como os blobs no armazenamento do Azure são usados com o HDInsight, consulte Usar o Armazenamento de Blobs do Azure com o HDInsight.

Exemplo de trabalho

O seguinte trabalho do Pig Latin carrega o sample.log arquivo do armazenamento padrão para seu cluster HDInsight. Em seguida, ele executa uma série de transformações que resultam em uma contagem de quantas vezes cada nível de log ocorreu nos dados de entrada. Os resultados são gravados no STDOUT.

LOGS = LOAD 'wasb:///example/data/sample.log';
LEVELS = foreach LOGS generate REGEX_EXTRACT($0, '(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)', 1)  as LOGLEVEL;
FILTEREDLEVELS = FILTER LEVELS by LOGLEVEL is not null;
GROUPEDLEVELS = GROUP FILTEREDLEVELS by LOGLEVEL;
FREQUENCIES = foreach GROUPEDLEVELS generate group as LOGLEVEL, COUNT(FILTEREDLEVELS.LOGLEVEL) as COUNT;
RESULT = order FREQUENCIES by COUNT desc;
DUMP RESULT;

A imagem a seguir mostra um resumo do que cada transformação faz com os dados.

Representação gráfica das transformações.

Execute o trabalho Pig Latin

O HDInsight pode executar trabalhos do Pig Latin 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.

Pig e SQL Server Integration Services

Você pode usar o SQL Server Integration Services (SSIS) para executar um trabalho do Pig. O Azure Feature Pack para SSIS fornece os seguintes componentes que funcionam com trabalhos do Pig no HDInsight.

Saiba mais sobre o Azure Feature Pack para SSIS aqui.

Próximos passos

Agora que você aprendeu a usar o Pig com o HDInsight, use os links a seguir para explorar outras maneiras de trabalhar com o Azure HDInsight.