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