ECL ( язык программирования, ориентированный на данные)

редактировать
ECL
Paradigm декларативный, структурированный, данные- centric
Developer HPCC Systems®, LexisNexis Risk Solutions
Впервые появился2000
Дисциплина печати статическая, сильная, безопасный
OS GNU / Linux
Веб-сайтhttp://hpccsystems.com/
Под влиянием
Prolog, Pascal, SQL, Snobol4, C ++, Clarion

ECL - это декларативный язык программирования, ориентированный на данные, разработанный в 2000 году. чтобы команда программистов могла обрабатывать большие данные в высокопроизводительном вычислительном кластере без участия программиста во многих императивных решениях нижнего уровня.

Содержание
  • 1 История
  • 2 Конструкции языка
    • 2.1 Привет, мир
    • 2.2 Примитивы ECL
    • 2.3 Инкапсуляция ECL
    • 2.4 Поддержка параллелизма в E CL
    • 2.5 Сравнение с Map-Reduce
  • 3 Ссылки
  • 4 Внешние ссылки
История

Изначально ECL был спроектирован и разработан Дэвидом Бейлиссом в 2000 году как инструмент повышения производительности внутри компании. Seisint Inc и считалась «секретным оружием», которое позволило Seisint завоевать долю рынка в своем бизнесе данных. У Equifax был процесс на основе SQL для прогнозирования того, кто обанкротится в следующие 30 дней, но для обработки данных потребовалось 26 дней. Первая реализация ECL решила ту же проблему за 6 минут. Эта технология была названа движущей силой приобретения Seisint LexisNexis, а затем снова основным источником синергии, когда LexisNexis приобрела ChoicePoint Inc.

языковые конструкции

ECL, по крайней мере, в чистом виде, является декларативным языком, ориентированным на данные. Программ в самом строгом смысле слова не существует. Скорее, приложение ECL будет определять количество основных наборов данных (или значений данных), а затем операции, которые должны быть выполнены с этими значениями.

Hello world

ECL - это краткие решения проблем и разумные настройки по умолчанию. Программа «Hello World» характерно коротка:

«Hello World»

Возможно, более интересный пример возьмет список строк, отсортирует их по порядку, а затем вернет результат в качестве результата. вместо.

// Сначала объявите набор данных с одним столбцом, содержащим список строк // Наборы данных также могут быть двоичными, CSV, XML или внешне определенными структурами D: = DATASET ([{'ECL'}, {'Declarative'}, {'Data'}, {'Centric'}, {'Programming'}, {'Language'}], {STRING Value;}); SD: = СОРТИРОВАТЬ (D; значение); output (SD)

Операторы, содержащие : =, определены в ECL как определения атрибутов. Они не обозначают действие; скорее определение термина. Таким образом, логически программу ECL можно читать: «снизу вверх»

ВЫХОД (SD)

Что такое SD?

SD: = СОРТИРОВАТЬ (D, значение);

SD - это D, отсортированный по «значению»

Что такое D?

D: = НАБОР ДАННЫХ ([{'ECL'}, {'Декларативный'}, {'Данные'}, {'Центрический'}, {'Программирование'}, {'Язык'}], {STRING Значение; });

D - это набор данных с одним столбцом, помеченным как «Значение» и содержащий следующий список данных.

примитивы ECL

примитивы ECL, которые работают с наборами данных, включают SORT, ROLLUP, DEDUP, ITERATE, PROJECT, JOIN, NORMALIZE, DENORMALIZE, PARSE, CHOSEN, ENTH, TOPN, DISTRIBUTE

Инкапсуляция ECL

Хотя ECL краток и LexisNexis утверждает, что 1 строка ECL примерно эквивалентна 120 строкам C ++, он по-прежнему имеет значительную поддержку для крупномасштабного программирования, включая инкапсуляцию данных и повторное использование кода. Доступные конструкции включают MODULE, FUNCTION, FUNCTIONMACRO, INTERFACE, MACRO, EXPORT, SHARED

Поддержка параллелизма в ECL

В реализации HPCC по умолчанию большинство ECL конструкции будут выполняться параллельно на используемом оборудовании. Многие из примитивов также имеют параметр LOCAL, чтобы указать, что операция должна выполняться локально на каждом узле.

Сравнение с Map-Reduce

Парадигма Hadoop Map-Reduce состоит из трех фаз, которые соотносятся с примитивами ECL следующим образом.

Имя / термин HadoopЭквивалент ECLКомментарии
MAPing в MAPperPROJECT / TRANSFORMПринимает запись и преобразует ее в другой формат; в случае Hadoop преобразование происходит в пару «ключ-значение»
SHUFFLE (Phase 1)DISTRIBUTE (, HASH (KeyValue))Записи из преобразователь распределяется в зависимости от значения KEY
SHUFFLE (Phase 2)SORT (, LOCAL)Записи, поступающие в конкретный редуктор, сортируются в порядке KEY
REDUCEROLLUP (, Key, LOCAL)Теперь объединены записи для определенного значения KEY
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-18 14:15:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте