我正在开发用于实时数据(总共可以是20-30 M)的作业调度程序。我想为他们所有人维护一个优先级队列,以决定首先要发送哪些数据。优先级队列应该能够保存大量数据。 能否按顺序保存此数据。 还是还有其他出路?
答案 0 :(得分:-1)
优先级队列只是项目的有序列表。使用spark / spark spark sql可以从数据框中选择并指定排序顺序和限制(例如,使单个项目出队)。如果您将不断查询数据,请确保缓存数据帧。
在名为priority_queue
的spark中考虑一个简化表,如下所示:
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)")
创建一个临时表