【发布时间】:2017-01-19 17:59:34
【问题描述】:
有一个在 Spark 上计算并存储到 Cassandra 的图。
还有一个 REST API,它有一个端点来获取带有边和边的边的图节点。
这个二度图可能包含多达 70000 个节点。
目前使用 Cassandra 作为数据库,但是从 Cassandra 中按键提取大量数据需要大量时间和资源。
我们尝试了 TitanDB、Neo4j 和 OriendDB 来提高性能,但 Cassandra 的效果最好。
现在有另一个想法。在 API 服务中持久化 RDD(或者可能是 GrapgX 对象),并在 API 调用中从持久化的 RDD 中过滤必要的数据。
我猜它会在 RDD 适合内存时运行得很快,但是在它缓存到磁盘的情况下,它会像完全扫描一样工作(例如完全扫描 parquet 文件)。
我也希望我们会面临这些问题:
- spark 内存泄漏;
- 更新此 RDD(取消保留以前的,读取新的并保留新的)将需要停止 API;
- 并发使用此 RDD 需要手动管理 CPU 资源。
有人有这样的经历吗?
【问题讨论】:
标签: api apache-spark graph graph-databases