Apache Pig - Descripción general
¿Qué es Apache Pig?
Apache Pig es una abstracción de MapReduce. Es una herramienta / plataforma que se utiliza para analizar conjuntos de datos más grandes representándolos como flujos de datos. El cerdo se usa generalmente conHadoop; podemos realizar todas las operaciones de manipulación de datos en Hadoop usando Apache Pig.
Para escribir programas de análisis de datos, Pig proporciona un lenguaje de alto nivel conocido como Pig Latin. Este lenguaje proporciona varios operadores mediante los cuales los programadores pueden desarrollar sus propias funciones para leer, escribir y procesar datos.
Para analizar datos usando Apache Pig, los programadores necesitan escribir guiones usando el lenguaje Pig Latin. Todos estos scripts se convierten internamente en tareas de Map y Reduce. Apache Pig tiene un componente conocido comoPig Engine que acepta los scripts de Pig Latin como entrada y convierte esos scripts en trabajos MapReduce.
¿Por qué necesitamos Apache Pig?
Los programadores que no son tan buenos en Java solían tener dificultades para trabajar con Hadoop, especialmente al realizar cualquier tarea de MapReduce. Apache Pig es una bendición para todos estos programadores.
Utilizando Pig Latin, los programadores pueden realizar tareas de MapReduce fácilmente sin tener que escribir códigos complejos en Java.
Usos de Apache Pig multi-query approach, reduciendo así la longitud de los códigos. Por ejemplo, una operación que requiera que escriba 200 líneas de código (LoC) en Java se puede realizar fácilmente escribiendo tan solo 10 LoC en Apache Pig. En última instancia, Apache Pig reduce el tiempo de desarrollo en casi 16 veces.
Pig Latin es SQL-like language y es fácil aprender Apache Pig cuando está familiarizado con SQL.
Apache Pig proporciona muchos operadores integrados para admitir operaciones de datos como combinaciones, filtros, pedidos, etc. Además, también proporciona tipos de datos anidados como tuplas, bolsas y mapas que faltan en MapReduce.
Características del cerdo
Apache Pig viene con las siguientes características:
Rich set of operators - Proporciona muchos operadores para realizar operaciones como unir, ordenar, archivar, etc.
Ease of programming - Pig Latin es similar a SQL y es fácil escribir un script de Pig si eres bueno en SQL.
Optimization opportunities - Las tareas en Apache Pig optimizan su ejecución automáticamente, por lo que los programadores deben centrarse solo en la semántica del lenguaje.
Extensibility - Utilizando los operadores existentes, los usuarios pueden desarrollar sus propias funciones para leer, procesar y escribir datos.
UDF’s - Pig ofrece la posibilidad de crear User-defined Functions en otros lenguajes de programación como Java e invocarlos o incrustarlos en Pig Scripts.
Handles all kinds of data- Apache Pig analiza todo tipo de datos, tanto estructurados como no estructurados. Almacena los resultados en HDFS.
Apache Pig Vs MapReduce
A continuación se enumeran las principales diferencias entre Apache Pig y MapReduce.
Cerdo apache | Mapa reducido |
---|---|
Apache Pig es un lenguaje de flujo de datos. | MapReduce es un paradigma de procesamiento de datos. |
Es un idioma de alto nivel. | MapReduce es de bajo nivel y rígido. |
Realizar una operación de unión en Apache Pig es bastante simple. | Es bastante difícil en MapReduce realizar una operación de unión entre conjuntos de datos. |
Cualquier programador novato con un conocimiento básico de SQL puede trabajar cómodamente con Apache Pig. | La exposición a Java es imprescindible para trabajar con MapReduce. |
Apache Pig utiliza un enfoque de consultas múltiples, lo que reduce en gran medida la longitud de los códigos. | MapReduce requerirá casi 20 veces más líneas para realizar la misma tarea. |
No es necesario compilar. En la ejecución, cada operador de Apache Pig se convierte internamente en un trabajo de MapReduce. | Los trabajos de MapReduce tienen un largo proceso de compilación. |
Apache Pig Vs SQL
A continuación se enumeran las principales diferencias entre Apache Pig y SQL.
Cerdo | SQL |
---|---|
Pig Latin es un procedural idioma. | SQL es un declarative idioma. |
En Apache Pig, schemaes opcional. Podemos almacenar datos sin diseñar un esquema (los valores se almacenan como $ 01, $ 02, etc.) | El esquema es obligatorio en SQL. |
El modelo de datos en Apache Pig es nested relational. | El modelo de datos utilizado en SQL is flat relational. |
Apache Pig ofrece oportunidades limitadas para Query optimization. | Hay más oportunidades para la optimización de consultas en SQL. |
Además de las diferencias anteriores, Apache Pig Latin:
- Permite divisiones en la tubería.
- Permite a los desarrolladores almacenar datos en cualquier lugar del proceso.
- Declara planes de ejecución.
- Proporciona operadores para realizar funciones ETL (extraer, transformar y cargar).
Apache Pig Vs Hive
Tanto Apache Pig como Hive se utilizan para crear trabajos MapReduce. Y en algunos casos, Hive opera en HDFS de manera similar a Apache Pig. En la siguiente tabla, hemos enumerado algunos puntos importantes que distinguen a Apache Pig de Hive.
Cerdo apache | Colmena |
---|---|
Apache Pig usa un lenguaje llamado Pig Latin. Fue creado originalmente enYahoo. | Hive usa un lenguaje llamado HiveQL. Fue creado originalmente enFacebook. |
Pig Latin es un lenguaje de flujo de datos. | HiveQL es un lenguaje de procesamiento de consultas. |
Pig Latin es un lenguaje de procedimiento y encaja en el paradigma de la tubería. | HiveQL es un lenguaje declarativo. |
Apache Pig puede manejar datos estructurados, no estructurados y semiestructurados. | Hive es principalmente para datos estructurados. |
Aplicaciones de Apache Pig
Los científicos de datos generalmente usan Apache Pig para realizar tareas que involucran procesamiento ad-hoc y creación rápida de prototipos. Se utiliza Apache Pig -
- Para procesar grandes fuentes de datos, como registros web.
- Realizar procesamiento de datos para plataformas de búsqueda.
- Para procesar cargas de datos sensibles al tiempo.
Apache Pig - Historia
En 2006, Apache Pig se desarrolló como un proyecto de investigación en Yahoo, especialmente para crear y ejecutar trabajos de MapReduce en cada conjunto de datos. En2007, Apache Pig fue de código abierto a través de la incubadora Apache. En2008, salió la primera versión de Apache Pig. En2010, Apache Pig se graduó como un proyecto de nivel superior de Apache.