我想了解如何做以下事情:
我想维护带有spark的二叉搜索树(BST)
我有两个简单的操作,我将它们放入流媒体中
这就是我考虑使用Spark Streaming的原因。
操作如下:
a)在BST上添加一个数字
b)删除一个号码
*假设我没有重复的数字。
我怎样才能以正确的方式做到这一点?我的主要问题是我不知道应该在哪里保留树。
(假设它的大小总是适合我的RAM)
对我来说,"大数据"这里是操作的数量,所以我想使用Spark Streaming来处理流中的大量操作 同样,树保持较小,并始终适合RAM。 (如果它没有?)
最好的方法是什么?
除此之外,我想使用堆栈数据结构而不是BST做同样的事情。
这些操作只是推送和弹出数字。
也许Apache Storm会更好地完成这些任务?
答案 0 :(得分:2)
对于堆栈,您可以在推送时使用带有密钥的redis作为计数器或时间戳,当pooping弹出最新的时候。
答案 1 :(得分:1)
对于BST,您可以使用图x,并将其用作分布式数据结构。 另一种方法可能是Akka,http://alexminnaar.com/building-a-distributed-binary-search-tree-with-akka.htm。
对于你可以使用的堆栈,将rdd与d stream配对,key是推送时的时间戳,但不知道如何弹出。