【问题标题】:Apache Spark Streaming maintain a binary search treeApache Spark Streaming 维护一个二叉搜索树
【发布时间】:2015-08-11 22:32:13
【问题描述】:

我想了解如何做以下事情:
我想用 spark 维护一个二叉搜索树 (BST)。
我有 2 个简单的操作,我在流媒体中得到它们。
这就是我考虑使用 Spark Streaming 的原因。

操作如下:
a) 向 BST 添加一个数字
b) 删除一个号码
*假设我没有重复的数字。

我怎样才能以正确的方式做到这一点?我的主要问题是我不确定我应该把树放在哪里。
(假设它的大小总是适合我的 RAM)

对我来说,这里的“大数据”是操作的数量,所以我想使用 Spark Streaming 来处理大量来自流的操作。
同样,树保持小,并且总是适合 RAM。 (如果没有呢?)

最好的方法是什么?

除此之外,我想使用 Stack 数据结构而不是 BST 来做同样的事情。
操作只是push和pop数字。

也许 Apache Storm 更适合这些任务?

【问题讨论】:

    标签: apache-spark spark-streaming apache-storm


    【解决方案1】:

    对于堆栈,您可以在推送时使用带有键的 redis 作为计数器或时间戳,当便便时弹出最新的。

    【讨论】:

    • 很好。如果我需要在进行弹出操作之前对号码进行一些操作怎么办?我能做些什么呢?让我们假设它是一个简单的计算。
    • 我在哪里进行计算?
    • spark streaming,当你分析每个dstream时,你可以在相同的代码中与redis对话。另外,如果你觉得有用的话,你能投票吗?
    【解决方案2】:

    对于 BST,您可以使用图 x,并将其用作分布式数据结构。 另一种方法可能是使用 Akka,http://alexminnaar.com/building-a-distributed-binary-search-tree-with-akka.htm

    对于您可能使用的堆栈,将 rdd 与 d 流配对,键是推送时的时间戳,但不确定如何弹出。

    【讨论】:

    • 我可以在图 x 中使用流式传输吗?
    • 我可以使用一些数据库来存储我的堆栈吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多