将spark数据加载到Mongo / Memcached中以供Webservice使用

时间:2015-04-05 16:44:55

标签: web-services mongodb memcached apache-spark rdd

我非常新兴,并且有一个特定的工作流程相关问题。虽然它不是一个与编码相关的问题,但它更像是一个与火花功能相关的问题,我认为这是合适的。如果您认为此问题不适合SO,请随时将我重定向到正确的网站。

所以这里:   1.我计划使用Spark的Sliding Window功能消耗一组请求并计算推荐模型。计算模型后,Web服务是否可以直接从RDD查询和使用此数据?如果是这样,有人能指出我如何实现这一目标的示例代码吗?

  1. 如果没有,我想将数据存储在memcached中,因为我存储的数据目前不是太大,它主要用于内存迭代计算和流支持目的,我使用Spark,所以是可以将RDD数据加载到memcached中吗?我问,因为我只能找到Spark的Mongo连接器,但找不到Memcached连接器。
  2. 非常感谢任何帮助,尤其是特定的代码示例/链接。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您无法以这种方式直接查询RDD。将您的Spark作业视为流处理器。您可以做的是将更新的模型推送到某个“商店”,例如数据库(使用自定义API或JDBC),文件系统或memcached。您甚至可以在Spark代码中进行Web服务调用。

无论您做什么,请注意处理每批数据(包括I / O)的时间远远低于您指定的间隔时间。否则,您可能会遇到可能最终崩溃的瓶颈。

另一件需要注意的事情是,您将模型数据放在群集上的多个RDD分区中(当然这是默认设置)。如果你的“记录”的顺序无关紧要,那么将它们并行写出就可以了。如果您需要按顺序写出特定的总订单(而且数据确实不大),请调用collect将它们放入驱动程序代码中的一个内存数据结构中(这意味着分布式网络中的网络流量)工作),然后从那里写。