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