Jaql - Википедия - Jaql
Парадигма | Функциональный |
---|---|
Разработано | Вук Эрджеговач (Google ) |
Впервые появился | 9 октября 2008 г. |
Стабильный выпуск | 0.5.1 / 12 июля 2010 г. |
Язык реализации | Ява |
Операционные системы | Кроссплатформенность |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | код |
Основной реализации | |
IBM BigInsights |
Jaql (произносится «шакал») - это функциональный обработка данных и язык запросов, наиболее часто используемый для JSON обработка запросов по большим данным.
Это началось как проект с открытым исходным кодом в Google.[1] но последний выпуск был 12.07.2010. IBM[2] стал основным языком обработки данных для своих Hadoop пакет программного обеспечения BigInsights.
Хотя был разработан для JSON он поддерживает множество других источников данных, таких как CSV, TSV, XML.
Сравнение[3] на другие языки запросов BigData, например Свинья латынь и Улей QL иллюстрирует аспекты производительности и удобства использования этих технологий.
Jaql поддерживает[4] ленивая оценка, поэтому выражения материализуются только при необходимости.
Синтаксис
Основная концепция Jaql:
источник -> оператор(параметр) -> раковина ;
где сток может быть источником для последующего оператора. Поэтому обычно программа Jaql должна иметь следующую структуру, выражающую график обработки данных:
источник -> оператор1(параметр) -> оператор2(параметр) -> оператор2(параметр) -> оператор3(параметр) -> оператор4(параметр) -> раковина ;
Чаще всего для удобства чтения программы Jaql разделяются на строку после стрелки, что также является распространенной идиомой в Twitter. Ожог:
источник -> оператор1(параметр)-> оператор2(параметр)-> оператор2(параметр)-> оператор3(параметр)-> оператор4(параметр)-> раковина ;
Основные операторы[5]
Расширять
Используйте выражение EXPAND для выравнивания вложенных массивов. Это выражение принимает в качестве входных данных массив вложенных массивов [[T]] и создает выходной массив [T], перемещая элементы каждого вложенного массива в выходной массив верхнего уровня.
Фильтр
Используйте оператор FILTER, чтобы отфильтровать элементы из указанного входного массива. Этот оператор принимает на вход массив элементов типа T и выводит массив того же типа, сохраняя те элементы, для которых предикат оценивается как истина. Это Jaql-эквивалент SQL ГДЕ пункт. Пример:
данные = [ {имя: "Джон Доу", доход: 20000, управляющий делами: ложный}, {имя: "Винс Уэйн", доход: 32500, управляющий делами: ложный}, {имя: "Джейн Дин", доход: 72000, управляющий делами: истинный}, {имя: "Алекс Смит", доход: 25000, управляющий делами: ложный}];данные -> фильтр $.управляющий делами;[ { "доход": 72000, "управляющий делами": истинный, "имя": "Джейн Дин" }]данные -> фильтр $.доход < 30000;[ { "доход": 20000, "управляющий делами": ложный, "имя": "Джон Доу" }, { "доход": 25000, "управляющий делами": ложный, "имя": "Алекс Смит" }]
Группа
Используйте выражение GROUP, чтобы сгруппировать один или несколько входных массивов по ключу группировки и применить агрегатную функцию для каждой группы.
Присоединиться
Используйте оператор JOIN, чтобы выразить соединение между двумя или более входными массивами. Этот оператор поддерживает несколько типов объединений, включая естественные, лево-внешние, правые-внешние и внешние.
Сортировать
Используйте оператор SORT для сортировки ввода по одному или нескольким полям.
Вершина
Выражение TOP выбирает первые k элементов своего ввода. Если предоставляется компаратор, вывод семантически эквивалентен сортировке ввода с последующим выбором первого k элементы.
Преобразовать
Используйте оператор TRANSFORM, чтобы реализовать проекцию или применить функцию ко всем элементам вывода.