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