在RESTAPI中使用spark RDD作为数据源
有一个在Spark上计算并存储到Cassandra的图形。在RESTAPI中使用spark RDD作为数据源,api,apache-spark,graph,graph-databases,Api,Apache Spark,Graph,Graph Databases,有一个在Spark上计算并存储到Cassandra的图形。还有一个REST API,它的端点用于获取带有边和边的边的图形节点。 此二级图可能包含多达70000个节点。目前使用Cassandra作为数据库,但按键从Cassandra提取大量数据需要大量时间和资源我们尝试了TitanDB、Neo4j和OriendDB来提高性能,但Cassandra的效果最好。 现在有另一个想法。在API服务中持久化RDD(或可能是GrapgX对象),并在API调用时从持久化RDD中筛选必要的数据。 我想,当RDD适
还有一个REST API,它的端点用于获取带有边和边的边的图形节点。
此二级图可能包含多达70000个节点。
目前使用Cassandra作为数据库,但按键从Cassandra提取大量数据需要大量时间和资源
我们尝试了TitanDB、Neo4j和OriendDB来提高性能,但Cassandra的效果最好。
现在有另一个想法。在API服务中持久化RDD(或可能是GrapgX对象),并在API调用时从持久化RDD中筛选必要的数据。
我想,当RDD适合内存时,它会工作得很快,但如果它缓存到磁盘,它的工作方式将类似于完全扫描(例如,完全扫描拼花文件)。 我还希望我们将面对这些问题:
- 火花内存泄漏李>
- 更新此RDD(取消持久化上一个、读取新的和持久化新的RDD)将需要停止API李>
- 并发使用此RDD将需要手动管理CPU资源
有人有这样的经验吗 Spark不是存储引擎。除非您每次都要处理大量数据,否则您应该考虑:
- 内存数据网格-Hazelcast、ApacheIgnite、Coherence、GigaSpaces等
- 记忆中的卡桑德拉-
- 在其他框架/数据库中搜索“内存中”选项