我可以在Spark中存储有序队列吗?

时间:2019-03-15 04:31:22

标签: apache-spark bigdata spark-streaming scheduler priority-queue

我正在开发用于实时数据(总共可以是20-30 M)的作业调度程序。我想为他们所有人维护一个优先级队列,以决定首先要发送哪些数据。优先级队列应该能够保存大量数据。 能否按顺序保存此数据。 还是还有其他出路?

1 个答案:

答案 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")

获得前x个商品

然后从topnspark.sql("delete from priority_queue where id in (select id from topn)")创建一个临时表