Могу ли я хранить заказанную очередь в Spark? - PullRequest
0 голосов
/ 15 марта 2019

Я работаю над созданием планировщика заданий для данных в режиме реального времени (которые могут составлять 20-30 М). Я хочу сохранить приоритетную очередь для всех, чтобы решить, какие данные отправлять первыми. Очередь приоритетов должна быть в состоянии содержать этот большой объем данных. Возможно ли в искре держать эти данные в порядке. Или есть другой выход?

1 Ответ

0 голосов
/ 15 марта 2019

Очередь приоритетов - это просто упорядоченный список элементов.Используя spark / spark spark sql, вы можете выбрать из фрейма данных и указать порядок и предел сортировки (например, для удаления одного элемента из очереди).Если вы будете постоянно запрашивать данные, убедитесь, что вы кэшируете фрейм данных.

Рассмотрим упрощенную таблицу в искре с именем priority_queue, например:

id    |    priority    |   date_added
1            1             3/15/2018 00:00:00
2            2             3/15/2015 00:01:00
...

Вы можете получить топ-х элементов с помощью val topn = spark.sql("select * from priority_queue order by priority, date_added limit x")

Затем создайте временную таблицу изtopn и spark.sql("delete from priority_queue where id in (select id from topn)")

...