Sawzall (язык программирования)

редактировать
Sawzall
Developer Google
Впервые появился2003 г.; 17 лет назад (2003 г.)
Лицензия Лицензия Apache 2.0
Веб-сайткод.google.com / archive / p / szl /

Sawzall - это процедурный зависящий от домена язык программирования, используемый Google для обработки большого количества отдельных записей журнала.. Sawzall был впервые описан в 2003 году, а среда выполнения szl была открыта в августе 2010 года. Однако, поскольку агрегаторы таблиц MapReduce не были выпущены, среда выполнения с открытым исходным кодом бесполезна для крупномасштабных данных. анализ нескольких готовых файлов журналов. Sawzall был заменен на Lingo (входит в Go ) для большинства целей в Google.

Содержание

  • 1 Мотивация
  • 2 Функции
  • 3 Код Sawzall
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки

Мотивация

Журналы серверов Google хранятся в виде больших коллекций записей (Protocol Buffers ), которые разбиты на разделы много дисков в GFS. Для выполнения вычислений с использованием журналов инженеры могут писать программы MapReduce на C ++ или Java. Программы MapReduce должны быть скомпилированы и могут быть более подробными, чем необходимо, поэтому написание программы для анализа журналов может занять много времени. Чтобы упростить написание быстрых сценариев, Роб Пайк и др. разработал язык Sawzall. Сценарий Sawzall выполняется на этапе Map в MapReduce и «передает» значения в таблицы. Затем на этапе сокращения (о котором писатель сценария не должен беспокоиться) объединяет таблицы из нескольких запусков в один набор таблиц.

В настоящее время только языковая среда (которая запускает сценарий Sawzall один раз на одном входе) является открытым исходным кодом; вспомогательная программа, построенная на MapReduce, еще не выпущена.

Возможности

Некоторые интересные особенности включают:

  • Сценарий Sawzall имеет единственный вход (запись журнала) и может выводить только путем выдачи в таблицы. Сценарий не может иметь других побочных эффектов.
  • Сценарий может определять любое количество выходных таблиц. Типы таблиц включают:
    • collectionсохраняет каждое выданное значение
    • sumсохраняет сумму каждого выданного значения
    • maximum (n)сохраняет только самые высокие n значений с заданным весом.
  • Кроме того, существует несколько типов статистических таблиц, которые дают неточные результаты. Чем выше параметр n, тем точнее оценки.
    • sample (n)дает случайную выборку из n значений из всех выданных значений
    • quantile (n)вычисляет кумулятивное распределение вероятностей заданных чисел.
    • top (n)дает n значений, которые, вероятно, являются наиболее частыми из генерируемых значений.
    • unique (n)оценивает количество генерируемых уникальных значений.

В конструкции Соузолла эффективность и простота двигателя важнее мощности:

  • Sawzall имеет статическую типизацию, и движок компилирует скрипт в x86 перед его запуском.
  • Sawzall поддерживает списки составных типов данных, карты и структуры. Однако здесь нет ссылок или указателей. Все назначения и аргументы функций создают копии. Это означает, что рекурсивные структуры данных и циклы невозможны.
  • Как и C, функции могут изменять глобальные и локальные переменные, но не являются замыканиями.

Код Sawzall

Эта полная программа Sawzall будет читать ввод и выдают три результата: количество записей, сумму значений и сумму квадратов значений.

count: сумма таблицы int; total: таблица суммы с плавающей запятой; sum_of_squares: таблица суммы с плавающей запятой; x: float = ввод; emit count <- 1; emit total <- x; emit sum_of_squares <- x * x;

См. также

Ссылки

Дополнительная литература

  • С. Гемават, Х. Гобиофф, С.-Т. Леунг, Файловая система Google, в: 19-й симпозиум ACM по принципам операционных систем, материалы, 17 ACM Press, 2003, стр. 29–43.

Внешние ссылки

Последняя правка сделана 2021-06-07 04:13:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте