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