Алгоритми потоку даних «Розділити та перемогти»


12

Які корисні алгоритми існують, що працюють на величезних потоках даних, а також їх результати досить малі, і можна обчислити результат для суміші двох потоків, якось об'єднавши їх результати?

Я можу назвати декілька:

  • Очевидні речі, такі як сума, min, max, count, top-K тощо.
  • Приблизні так звані "ескізні" алгоритми потоку для гістограм, підрахунок окремих елементів або обчислення квантилів

Які там інші?

(Мені цікаво, тому що я пишу проект хобі для моніторингу розподілених систем, корисність яких безпосередньо визначається корисністю таких алгоритмів)


Мені набагато складніше думати про будь-який алгоритм потокового передавання, який не є "розділити і перемогти" / асоціативний. Можливо, якась функція хеш-ролингу ... Чи є у вас природні приклади такого алгоритму потоку?
Томас Ейл

Відповіді:


9

Гуха та ін. '03 наведемо алгоритм наближення для k-серединної кластеризації в потоковій моделі. Їх алгоритм ділить дані на розрізнені фрагменти, знаходить O (k) центри для кожної неперервної частини, а потім об'єднує результати для отримання k центрів. Здається, це тип алгоритму, який ви шукаєте.


7

εεith(i1)th-рівень-потік, а рівень 0 - початковий потік). Це, по суті, надання стратегії "поділ і перемога" знизу вгору. з оновленнями вздовж "краю" дерева рекурсії. За структурою він дуже схожий на папір Гуха та ін, згаданий Левом.


6

Я знайшов документ ( "Розподіл частотно-залежних обчислень потоку даних" ), в якому сказано, що кожна функція розподілу частоти потоку є об'єднаною (хоча це не дає явної та ефективної побудови для операції злиття). І доказ здається дуже цікавим, включаючи деяку теорію кільця. Потрібно прочитати попередній документ того ж автора ( "Нижні межі щодо частотної оцінки потоків даних" ), основний результат якого використовується як основа для цього.

Це нагадує мені теорему третього гомоморфізму ...


Я не думаю, що документ Ganguly припускає, що стратегія поділу та перемоги може працювати для потокової передачі. Ця модель, здається, зводиться до моделі Mapreduce / MUD, в якій може бути кілька передач даних.
Суреш Венкат

Після прочитання мені здається, що він не використовує кілька пропусків.
jkff

4

Дослідження мов запитів безперервного потоку можуть дати деяке розуміння. Однією з таких мов є CQL , яку, на мою думку, приймає Oracle. Мови дозволяють обчислювати функції за розсувними вікнами потоку (включаючи вікна розміром 1). Ця дисертація бакалавра дає нещодавній огляд мови, включаючи деякі приклади. У цій роботі подано огляд деяких мов потокової обробки, які повинні бути корисні для пошуку посилань на інші пов'язані дослідження.

Я знаю, що це не відповідає безпосередньо на ваше запитання, але це повинно зв’язати вас з дослідженнями, проведеними людьми, що відходять з тієї ж відправної точки.


4

Це питання мені здається трохи круговим. Якщо проблема має властивість, яку ви хочете, тоді існує алгоритм, заснований на ескізі та злитті. Як було сказано вище, існує робота над кластеризацією, наближеннями та основними наборами, які забезпечують це. Крім того, більшість алгоритмів потокової передачі дозволяють об'єднувати потоки шляхом простого (концептуальної) сполучення одного потоку з іншим.

Крім того, я не впевнений, що алгоритми потокового потоку k є об'єднаними - але я можу помилятися.


Топ-k тривіально поєднуються: щоб об'єднати два списки з k елементів, ви з’єднаєте їх і приймете k останні останні пункти результату :) Однак, можливо, ви мали на увазі "топ k найчастіші", але я мав на увазі саме цей (що також є корисна проблема, наприклад, для розподілених обчислень чогось типу фейсбук-стіни)
jkff

3

Вибачте, що не дотримуєтеся цього, але я подумав, що ви, можливо, захочете ознайомитись з деякою роботою над розподіленим безперервним моніторингом потоків, де вам надано кілька потоків, а мета - відстежувати деяку сукупну статистику на центральному сайті моніторингу, мінімізуючи зв’язок. Модель мені звучить, тісно пов'язана з вашою мотивацією. Подивіться на посилання в книзі Муту . Один документ це .

Папір Гангулі теж дуже цікавий.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.