Jaql (pronunciado "jackal") es un lenguaje funcional de procesamiento y consulta de datos que se utiliza con mayor frecuencia para el procesamiento de consultas JSON en grandes volúmenes de datos.
Comenzó como un proyecto de código abierto en Google [ 1 ] pero la última versión fue el 12 de julio de 2010. IBM [ 2 ] lo adoptó como lenguaje principal de procesamiento de datos para su paquete de software Hadoop BigInsights .
Aunque fue desarrollado para JSON, admite una variedad de otras fuentes de datos como CSV , TSV y XML .
Una comparación [ 3 ] con otros lenguajes de consulta de Big Data como PIG Latin y Hive QL ilustra aspectos de rendimiento y usabilidad de estas tecnologías.
Jaql admite [ 4 ] evaluación perezosa , por lo que las expresiones solo se materializan cuando son necesarias.
Sintaxis
El concepto básico de Jaql es
origen -> operador(parámetro) -> sumidero; donde un sumidero puede ser una fuente para un operador posterior. Por lo tanto, normalmente un programa Jaql tiene la siguiente estructura, que expresa un gráfico de procesamiento de datos :
origen -> operador1(parámetro) -> operador2(parámetro) -> operador2(parámetro) -> operador3(parámetro) -> operador4(parámetro) -> sumidero ; Por razones de legibilidad, los programas Jaql suelen dividirse en dos líneas después de la flecha, como también es un modismo común en Twitter Scalding :
origen -> operador1(parámetro) -> operador2(parámetro) -> operador2(parámetro) -> operador3(parámetro) -> operador4(parámetro) -> fregadero ; Operadores principales
Fuente: [ 5 ]
Expandir
Utilice la expresión EXPAND para aplanar matrices anidadas. Esta expresión toma como entrada una matriz de matrices anidadas [[T]] y produce una matriz de salida [ T ] , promoviendo los elementos de cada matriz anidada a la matriz de salida de nivel superior.
Filtrar
Utilice el operador FILTER para filtrar elementos de la matriz de entrada especificada. Este operador toma como entrada una matriz de elementos de tipo T y genera una matriz del mismo tipo, conservando aquellos elementos para los que un predicado se evalúa como verdadero. Es el equivalente en Jaql de la cláusula WHERE de SQL. Ejemplo:
datos = [ { nombre : "Jon Doe" , ingresos : 20000 , gerente : falso }, { nombre : "Vince Wayne" , ingresos : 32500 , gerente : falso }, { nombre : "Jane Dean" , ingresos : 72000 , gerente : verdadero }, { nombre : "Alex Smith" , ingresos : 25000 , gerente : falso } ];datos -> filtrar $ . administrador ;[ { "ingresos" : 72000 , "gerente" : verdadero , "nombre" : "Jane Dean" } ]datos -> filtrar $ . ingresos < 30000 ;[ { "ingresos" : 20000 , "gerente" : falso , "nombre" : "Jon Doe" }, { "ingresos" : 25000 , "gerente" : falso , "nombre" : "Alex Smith" } ]Grupo
Utilice la expresión GROUP para agrupar una o más matrices de entrada según una clave de agrupación y aplique una función de agregación por grupo.
Unirse
Utilice el operador JOIN para expresar la unión entre dos o más matrices de entrada. Este operador admite varios tipos de uniones, incluidas las uniones naturales, externas izquierdas, externas derechas y externas.
Clasificar
Utilice el operador SORT para ordenar una entrada por uno o más campos.
Arriba
La expresión TOP selecciona los primeros k elementos de su entrada. Si se proporciona un comparador, la salida es semánticamente equivalente a ordenar la entrada y luego seleccionar los primeros k elementos.
Transformar
Utilice el operador TRANSFORM para realizar una proyección o para aplicar una función a todos los elementos de una salida.
Véase también
Referencias
- ↑ "Archivo de Google Code: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code" . code.google.com . Consultado el 30 de octubre de 2025 .
- ↑ Publicación inicial
- ↑ Stewart, Robert J.; Trinder, Phil W.; Loidl, Hans-Wolfgang (2011). "Comparación de lenguajes de consulta MapReduce de alto nivel" . Tecnologías avanzadas de procesamiento paralelo . Notas de clase en informática. Vol. 6965. págs. 58–72 . doi : 10.1007/978-3-642-24151-2_5 . ISBN 978-3-642-24150-5.
- ^ "Archivos jaql - Matouš Havlena" . 2013-07-18 . Consultado el 30 de octubre de 2025 .
- ↑ Documentación de IBM BigInsights
Enlaces externos
- Definición del lenguaje JAQL
- JAQL en Hadoop: una breve introducción
- Comparación con HIVE y PIG. Archivado el 1 de marzo de 2014 en Wayback Machine.
- Procesamiento adaptativo de agregados definidos por el usuario en Jaql
- Software de 2008
- Lenguajes de consulta
- JSON