Pig Latin - Básico

Pig Latin é a linguagem usada para analisar dados no Hadoop usando o Apache Pig. Neste capítulo, vamos discutir os fundamentos do Pig Latin, como declarações do Pig Latin, tipos de dados, operadores gerais e relacionais e UDFs do Pig Latin.

Pig Latin - Modelo de Dados

Conforme discutido nos capítulos anteriores, o modelo de dados do Pig está totalmente aninhado. UMARelationé a estrutura mais externa do modelo de dados Pig Latin. E é umbag onde -

  • Uma bolsa é uma coleção de tuplas.
  • Uma tupla é um conjunto ordenado de campos.
  • Um campo é um dado.

Pig Latin - Statemets

Durante o processamento de dados usando Pig Latin, statements são as construções básicas.

  • Essas declarações funcionam com relations. Eles incluemexpressions e schemas.

  • Cada instrução termina com um ponto e vírgula (;).

  • Realizaremos diversas operações utilizando operadores fornecidos pela Pig Latin, por meio de extratos.

  • Exceto LOAD e STORE, durante a execução de todas as outras operações, as instruções do Pig Latin tomam uma relação como entrada e produzem outra relação como saída.

  • Assim que você entrar em um Loaddeclaração no shell Grunt, sua verificação semântica será realizada. Para ver o conteúdo do esquema, você precisa usar oDumpoperador. Só depois de realizar odump operação, o trabalho MapReduce para carregar os dados no sistema de arquivos será executado.

Exemplo

A seguir, está uma instrução Pig Latin, que carrega dados no Apache Pig.

grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as 
   ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Pig Latin - Tipos de dados

A tabela abaixo descreve os tipos de dados do Pig Latin.

SN Tipo de dados Descrição e exemplo
1 int

Representa um número inteiro assinado de 32 bits.

Example : 8

2 grandes

Representa um número inteiro assinado de 64 bits.

Example : 5L

3 flutuador

Representa um ponto flutuante de 32 bits assinado.

Example : 5.5F

4 em dobro

Representa um ponto flutuante de 64 bits.

Example : 10,5

5 Chararray

Representa uma matriz de caracteres (string) no formato Unicode UTF-8.

Example : 'tutorials point'

6 Bytearray

Representa uma matriz de bytes (blob).

7 boleano

Representa um valor booleano.

Example : verdadeiro falso.

8 Data hora

Representa uma data e hora.

Example : 1970-01-01T00: 00: 00.000 + 00: 00

9 Biginteger

Representa um Java BigInteger.

Example : 60708090709

10 Bigdecimal

Representa um Java BigDecimal

Example : 185.98376256272893883

Tipos Complexos
11 Tupla

Uma tupla é um conjunto ordenado de campos.

Example : (rajá, 30)

12 Bolsa

Uma bolsa é uma coleção de tuplas.

Example : {(raju, 30), (Mohhammad, 45)}

13 Mapa

Um mapa é um conjunto de pares de valores-chave.

Example : ['nome' # 'Raju', 'idade' # 30]

Valores Nulos

Os valores para todos os tipos de dados acima podem ser NULL. O Apache Pig trata os valores nulos de maneira semelhante ao SQL.

Um nulo pode ser um valor desconhecido ou inexistente. Ele é usado como um espaço reservado para valores opcionais. Esses nulos podem ocorrer naturalmente ou podem ser o resultado de uma operação.

Pig Latin - Operadores Aritméticos

A tabela a seguir descreve os operadores aritméticos do Pig Latin. Suponha que a = 10 e b = 20.

Operador Descrição Exemplo
+

Addition - Adiciona valores em ambos os lados do operador

a + b dará 30
-

Subtraction - Subtrai o operando direito do operando esquerdo

a - b dará −10
*

Multiplication - Multiplica os valores em ambos os lados do operador

a * b dará 200
/

Division - Divide operando esquerdo pelo operando direito

b / a dará 2
%

Modulus - Divide operando esquerdo pelo operando direito e retorna o resto

b% a dará 0
? :

Bincond- Avalia os operadores booleanos. Possui três operandos, conforme mostrado a seguir.

variável x = (expressão)? value1 se verdadeiro :value2 se falso .

b = (a == 1)? 20h30;

se a = 1, o valor de b é 20.

se a! = 1, o valor de b é 30.

CASO

QUANDO

ENTÃO

ELSE END

Case - O operador de caso é equivalente ao operador bincond aninhado.

CASE f2% 2

WHEN 0 THEN 'mesmo'

WHEN 1 THEN 'estranho'

FIM

Pig Latin - Operadores de comparação

A tabela a seguir descreve os operadores de comparação do Pig Latin.

Operador Descrição Exemplo
==

Equal- Verifica se os valores de dois operandos são iguais ou não; se sim, então a condição se torna verdadeira.

(a = b) não é verdade
! =

Not Equal- Verifica se os valores de dois operandos são iguais ou não. Se os valores não forem iguais, a condição se torna verdadeira.

(a! = b) é verdade.
>

Greater than- Verifica se o valor do operando esquerdo é maior que o valor do operando direito. Se sim, então a condição se torna verdadeira.

(a> b) não é verdade.
<

Less than- Verifica se o valor do operando esquerdo é menor que o valor do operando direito. Se sim, então a condição se torna verdadeira.

(a <b) é verdade.
> =

Greater than or equal to- Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito. Se sim, então a condição se torna verdadeira.

(a> = b) não é verdade.
<=

Less than or equal to- Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito. Se sim, então a condição se torna verdadeira.

(a <= b) é verdadeiro.
partidas

Pattern matching - Verifica se a string do lado esquerdo corresponde à constante do lado direito.

f1 corresponde a '. * tutorial. *'

Pig Latin - Operadores de construção do tipo

A tabela a seguir descreve os operadores de construção de tipo do Pig Latin.

Operador Descrição Exemplo
()

Tuple constructor operator - Este operador é usado para construir uma tupla.

(Raju, 30 anos)
{}

Bag constructor operator - Este operador é usado para construir uma bolsa.

{(Raju, 30), (Mohammad, 45)}
[]

Map constructor operator - Este operador é usado para construir uma tupla.

[nome # Raja, idade # 30]

Pig Latin - Operações Relacionais

A tabela a seguir descreve os operadores relacionais do Pig Latin.

Operador Descrição
Loading and Storing
CARGA Para carregar os dados do sistema de arquivos (local / HDFS) em uma relação.
LOJA Para salvar uma relação com o sistema de arquivos (local / HDFS).
Filtrando
FILTRO Para remover linhas indesejadas de uma relação.
DISTINTO Para remover linhas duplicadas de uma relação.
FOREACH, GERATE Para gerar transformações de dados com base em colunas de dados.
CORRENTE Para transformar uma relação usando um programa externo.
Agrupamento e adesão
JUNTE-SE Para juntar duas ou mais relações.
COGROUP Para agrupar os dados em duas ou mais relações.
GRUPO Para agrupar os dados em uma única relação.
CRUZ Para criar o produto cruzado de duas ou mais relações.
Ordenação
ORDEM Para organizar uma relação em uma ordem de classificação com base em um ou mais campos (crescente ou decrescente).
LIMITE Para obter um número limitado de tuplas de uma relação.
Combinando e Dividindo
UNIÃO Para combinar duas ou mais relações em uma única relação.
DIVIDIDO Para dividir uma única relação em duas ou mais relações.
Operadores de diagnóstico
DUMP Para imprimir o conteúdo de uma relação no console.
DESCREVER Para descrever o esquema de uma relação.
EXPLICAR Para visualizar os planos de execução lógico, físico ou MapReduce para calcular uma relação.
ILUSTRAR Para visualizar a execução passo a passo de uma série de instruções.