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

问题描述 投票:-1回答:1

我正在开发一个作业调度程序,用于实时数据(总共可以达到20-30 M)。我想为所有人维护一个优先级队列,以决定首先发送哪些数据。优先级队列应该能够容纳这么大量的数据。是否可以通过火花将数据保存在订单中。或者还有其他出路吗?

apache-spark bigdata spark-streaming scheduler priority-queue
1个回答
-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)")创建临时表

© www.soinside.com 2019 - 2024. All rights reserved.