Apache Pig - Arquitectura
El lenguaje utilizado para analizar datos en Hadoop usando Pig se conoce como Pig Latin. Es un lenguaje de procesamiento de datos de alto nivel que proporciona un rico conjunto de tipos de datos y operadores para realizar diversas operaciones en los datos.
Para realizar una tarea en particular, los programadores que usan Pig, los programadores deben escribir un script de Pig usando el lenguaje Pig Latin y ejecutarlos usando cualquiera de los mecanismos de ejecución (Grunt Shell, UDF, Embedded). Después de la ejecución, estos scripts pasarán por una serie de transformaciones aplicadas por Pig Framework, para producir el resultado deseado.
Internamente, Apache Pig convierte estos scripts en una serie de trabajos de MapReduce y, por lo tanto, facilita el trabajo del programador. La arquitectura de Apache Pig se muestra a continuación.
Componentes de Apache Pig
Como se muestra en la figura, hay varios componentes en el marco de Apache Pig. Echemos un vistazo a los componentes principales.
Analizador
Inicialmente, los Scripts Pig son manejados por el Analizador. Comprueba la sintaxis del script, realiza la comprobación de tipos y otras comprobaciones diversas. La salida del analizador será un DAG (gráfico acíclico dirigido), que representa las declaraciones de Pig Latin y los operadores lógicos.
En el DAG, los operadores lógicos del script se representan como nodos y los flujos de datos se representan como bordes.
Optimizador
El plan lógico (DAG) se pasa al optimizador lógico, que realiza las optimizaciones lógicas como la proyección y el pushdown.
Compilador
El compilador compila el plan lógico optimizado en una serie de trabajos MapReduce.
Motor de ejecución
Finalmente, los trabajos de MapReduce se envían a Hadoop en un orden ordenado. Finalmente, estos trabajos de MapReduce se ejecutan en Hadoop produciendo los resultados deseados.
Modelo de datos de Pig Latin
El modelo de datos de Pig Latin está completamente anidado y permite tipos de datos complejos no atómicos como map y tuple. A continuación se muestra la representación esquemática del modelo de datos de Pig Latin.
Átomo
Cualquier valor único en Pig Latin, independientemente de sus datos, el tipo se conoce como Atom. Se almacena como cadena y se puede utilizar como cadena y número. int, long, float, double, chararray y bytearray son los valores atómicos de Pig. Un dato o un valor atómico simple se conoce comofield.
Example - 'raja' o '30'
Tupla
Un registro que está formado por un conjunto ordenado de campos se conoce como tupla, los campos pueden ser de cualquier tipo. Una tupla es similar a una fila en una tabla de RDBMS.
Example - (Raja, 30 años)
Bolso
Una bolsa es un conjunto desordenado de tuplas. En otras palabras, una colección de tuplas (no únicas) se conoce como bolsa. Cada tupla puede tener cualquier número de campos (esquema flexible). Una bolsa está representada por '{}'. Es similar a una tabla en RDBMS, pero a diferencia de una tabla en RDBMS, no es necesario que cada tupla contenga el mismo número de campos o que los campos en la misma posición (columna) tengan el mismo tipo.
Example - {(Raja, 30), (Mohammad, 45)}
Una bolsa puede ser un campo en una relación; en ese contexto, se conoce comoinner bag.
Example - {Raja, 30 años, {9848022338, [email protected],}}
Mapa
Un mapa (o mapa de datos) es un conjunto de pares clave-valor. loskeydebe ser de tipo chararray y debe ser único. losvaluepuede ser de cualquier tipo. Está representado por '[]'
Example - [nombre # Raja, # 30 años]
Relación
Una relación es una bolsa de tuplas. Las relaciones en Pig Latin no están ordenadas (no hay garantía de que las tuplas se procesen en ningún orden en particular).