Pig Latin - Conceptos básicos

Pig Latin es el idioma utilizado para analizar datos en Hadoop usando Apache Pig. En este capítulo, vamos a discutir los conceptos básicos de Pig Latin, como declaraciones de Pig Latin, tipos de datos, operadores generales y relacionales y UDF de Pig Latin.

Pig Latin - Modelo de datos

Como se discutió en los capítulos anteriores, el modelo de datos de Pig está completamente anidado. UNARelationes la estructura más externa del modelo de datos Pig Latin. Y es unbag donde -

  • Una bolsa es una colección de tuplas.
  • Una tupla es un conjunto ordenado de campos.
  • Un campo es un dato.

Pig Latin - Statemets

Al procesar datos con Pig Latin, statements son los constructos básicos.

  • Estas declaraciones funcionan con relations. Incluyenexpressions y schemas.

  • Cada declaración termina con un punto y coma (;).

  • Realizaremos diversas operaciones utilizando operadores proporcionados por Pig Latin, a través de declaraciones.

  • Excepto CARGAR y ALMACENAR, mientras realizan todas las demás operaciones, las declaraciones de Pig Latin toman una relación como entrada y producen otra relación como salida.

  • Tan pronto como ingrese a Loaddeclaración en el shell Grunt, se llevará a cabo su comprobación semántica. Para ver el contenido del esquema, debe utilizar elDumpoperador. Solo después de realizar eldump operación, se llevará a cabo el trabajo MapReduce para cargar los datos en el sistema de archivos.

Ejemplo

A continuación se muestra una declaración de Pig Latin, que carga datos en 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 datos

La siguiente tabla describe los tipos de datos de Pig Latin.

SN Tipo de datos Descripción y ejemplo
1 En t

Representa un entero de 32 bits con signo.

Example : 8

2 largo

Representa un entero de 64 bits con signo.

Example : 5L

3 flotador

Representa un punto flotante de 32 bits firmado.

Example : 5.5F

4 doble

Representa un punto flotante de 64 bits.

Example : 10,5

5 chararray

Representa una matriz de caracteres (cadena) en formato Unicode UTF-8.

Example : 'punto de tutoriales'

6 Bytearray

Representa una matriz de bytes (blob).

7 Booleano

Representa un valor booleano.

Example : verdadero Falso.

8 Fecha y hora

Representa una fecha y hora.

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

9 Biginteger

Representa un BigInteger de Java.

Example : 60708090709

10 Bigdecimal

Representa un BigDecimal de Java

Example : 185.98376256272893883

Tipos complejos
11 Tupla

Una tupla es un conjunto ordenado de campos.

Example : (raja, 30)

12 Bolso

Una bolsa es una colección de tuplas.

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

13 Mapa

Un mapa es un conjunto de pares clave-valor.

Example : ['nombre' # 'Raju', 'edad' # 30]

Valores nulos

Los valores para todos los tipos de datos anteriores pueden ser NULL. Apache Pig trata los valores nulos de forma similar a como lo hace SQL.

Un nulo puede ser un valor desconocido o inexistente. Se utiliza como marcador de posición para valores opcionales. Estos nulos pueden ocurrir de forma natural o pueden ser el resultado de una operación.

Pig Latin - Operadores aritméticos

La siguiente tabla describe los operadores aritméticos de Pig Latin. Suponga que a = 10 y b = 20.

Operador Descripción Ejemplo
+

Addition - Agrega valores a ambos lados del operador

a + b dará 30
-

Subtraction - Resta el operando de la mano derecha del operando de la mano izquierda

a - b dará −10
*

Multiplication - Multiplica los valores a ambos lados del operador

a * b dará 200
/

Division - Divide el operando de la izquierda por el operando de la derecha

b / a dará 2
%

Modulus - Divide el operando de la izquierda por el operando de la derecha y devuelve el resto

b% a dará 0
? :

Bincond- Evalúa los operadores booleanos. Tiene tres operandos como se muestra a continuación.

variable x = (expresión)? value1 si es cierto :value2 si es falso .

b = (a == 1)? 20:30;

si a = 1 el valor de b es 20.

si a! = 1 el valor de b es 30.

CASO

CUANDO

LUEGO

ELSE END

Case - El operador de caso es equivalente al operador de bincond anidado.

CASO f2% 2

CUANDO 0 ENTONCES 'incluso'

CUANDO 1 ENTONCES 'impar'

FIN

Pig Latin - Operadores de comparación

La siguiente tabla describe los operadores de comparación de Pig Latin.

Operador Descripción Ejemplo
==

Equal- Comprueba si los valores de dos operandos son iguales o no; si es así, entonces la condición se vuelve verdadera.

(a = b) no es cierto
! =

Not Equal- Comprueba si los valores de dos operandos son iguales o no. Si los valores no son iguales, la condición se convierte en verdadera.

(a! = b) es cierto.
>

Greater than- Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho. Si es así, entonces la condición se vuelve verdadera.

(a> b) no es cierto.
<

Less than- Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho. Si es así, entonces la condición se vuelve verdadera.

(a <b) es cierto.
> =

Greater than or equal to- Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho. Si es así, entonces la condición se vuelve verdadera.

(a> = b) no es cierto.
<=

Less than or equal to- Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho. Si es así, entonces la condición se vuelve verdadera.

(a <= b) es cierto.
partidos

Pattern matching - Comprueba si la cuerda del lado izquierdo coincide con la constante del lado derecho.

f1 coincide con '. * tutorial. *'

Pig Latin - Operadores de construcción tipo

La siguiente tabla describe los operadores de construcción de tipo de Pig Latin.

Operador Descripción Ejemplo
()

Tuple constructor operator - Este operador se usa para construir una tupla.

(Raju, 30 años)
{}

Bag constructor operator - Este operador se utiliza para construir una bolsa.

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

Map constructor operator - Este operador se usa para construir una tupla.

[nombre # Raja, # 30 años]

Pig Latin - Operaciones relacionales

La siguiente tabla describe los operadores relacionales de Pig Latin.

Operador Descripción
Loading and Storing
CARGA Cargar los datos del sistema de archivos (local / HDFS) en una relación.
TIENDA Para guardar una relación con el sistema de archivos (local / HDFS).
Filtración
FILTRAR Para eliminar filas no deseadas de una relación.
DISTINTO Para eliminar filas duplicadas de una relación.
ANTE TODOS, GENERAR Generar transformaciones de datos basadas en columnas de datos.
CORRIENTE Transformar una relación usando un programa externo.
Agrupación y unión
UNIRSE Para unir dos o más relaciones.
COGROUP Agrupar los datos en dos o más relaciones.
GRUPO Agrupar los datos en una sola relación.
CRUZAR Crear el producto cruzado de dos o más relaciones.
Clasificación
ORDEN Organizar una relación en un orden ordenado basado en uno o más campos (ascendente o descendente).
LÍMITE Obtener un número limitado de tuplas de una relación.
Combinar y dividir
UNIÓN Combinar dos o más relaciones en una sola relación.
DIVISIÓN Dividir una sola relación en dos o más relaciones.
Operadores de diagnóstico
TUGURIO Para imprimir el contenido de una relación en la consola.
DESCRIBIR Describir el esquema de una relación.
EXPLIQUE Para ver los planes de ejecución lógicos, físicos o MapReduce para calcular una relación.
ILUSTRAR Para ver la ejecución paso a paso de una serie de declaraciones.