Жакль
Парадигма | Функциональный |
---|---|
Разработано | Вук Эрцеговац ( Google ) |
Впервые появился | 9 октября 2008 г |
Стабильная версия | 0.5.1
/ 12 июля 2010 г |
Язык реализации | Ява |
ТЫ | Кросс-платформенный |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | код |
Основные реализации | |
IBM БигИнсайтс |
Jaql (произносится как «шакал») — это функциональный язык обработки данных и запросов, наиболее часто используемый для обработки запросов JSON к большим данным.
Все началось как проект с открытым исходным кодом в Google. [1] но последний выпуск был 12 июля 2010 г. ИБМ [2] взяла его в качестве основного языка обработки данных для своего Hadoop программного пакета BigInsights .
Хотя он был разработан для JSON, он поддерживает множество других источников данных, таких как CSV , TSV , XML .
Сравнение [3] к другим языкам запросов больших данных, таким как PIG Latin и Hive QL, иллюстрирует аспекты производительности и удобства использования этих технологий.
Жакл поддерживает [4] ленивые вычисления , поэтому выражения материализуются только при необходимости.
Синтаксис
[ редактировать ]Основная концепция Jaql заключается в
source -> operator(parameter) -> sink ;
где приемник может быть источником для нижестоящего оператора. Поэтому обычно программа на Jaql имеет следующую структуру, выражающую граф обработки данных :
source -> operator1(parameter) -> operator2(parameter) -> operator2(parameter) -> operator3(parameter) -> operator4(parameter) -> sink ;
Чаще всего из соображений читабельности программы Jaql разбиваются на строки после стрелки, что также является распространенной идиомой в Twitter Scalding :
source -> operator1(parameter)
-> operator2(parameter)
-> operator2(parameter)
-> operator3(parameter)
-> operator4(parameter)
-> sink ;
Основные операторы
[ редактировать ]Источник: [5]
Расширять
[ редактировать ]Используйте выражение EXPAND для выравнивания вложенных массивов. Это выражение принимает в качестве входных данных массив вложенных массивов [ [ T ] ] и создает выходной массив [ T ], повышая элементы каждого вложенного массива до выходного массива верхнего уровня.
Фильтр
[ редактировать ]Используйте оператор FILTER, чтобы отфильтровать элементы из указанного входного массива. Этот оператор принимает на вход массив элементов типа T и выводит массив того же типа, сохраняя те элементы, для которых предикат имеет значение true. Это Jaql-эквивалент предложения SQL WHERE . Пример:
data = [
{name: "Jon Doe", income: 20000, manager: false},
{name: "Vince Wayne", income: 32500, manager: false},
{name: "Jane Dean", income: 72000, manager: true},
{name: "Alex Smith", income: 25000, manager: false}
];
data -> filter $.manager;
[
{
"income": 72000,
"manager": true,
"name": "Jane Dean"
}
]
data -> filter $.income < 30000;
[
{
"income": 20000,
"manager": false,
"name": "Jon Doe"
},
{
"income": 25000,
"manager": false,
"name": "Alex Smith"
}
]
Группа
[ редактировать ]Используйте выражение GROUP для группировки одного или нескольких входных массивов по ключу группировки и применяйте агрегатную функцию к каждой группе.
Присоединиться
[ редактировать ]Используйте оператор JOIN, чтобы выразить соединение двух или более входных массивов. Этот оператор поддерживает несколько типов соединений, включая естественные, левосторонние, правосторонние и внешние соединения.
Сортировать
[ редактировать ]Используйте оператор SORT для сортировки входных данных по одному или нескольким полям.
Вершина
[ редактировать ]Выражение TOP выбирает первые k элементов своих входных данных. Если предоставляется компаратор, выходные данные семантически эквивалентны сортировке входных данных с последующим выбором первых k элементов.
Трансформировать
[ редактировать ]Используйте оператор TRANSFORM, чтобы реализовать проекцию или применить функцию ко всем элементам вывода.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Оригинальный проект Jaql
- ^ Первоначальная публикация
- ^ Стюарт, Роберт Дж.; Триндер, Фил В.; Лойдл, Ханс-Вольфганг (2011). «Сравнение языков запросов высокого уровня MapReduce» . Передовые технологии параллельной обработки . Конспекты лекций по информатике. Том. 6965. стр. 58–72. дои : 10.1007/978-3-642-24151-2_5 . ISBN 978-3-642-24150-5 .
- ^ JAQL в Hadoop, краткое введение
- ^ Документация IBM BigInsights