首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算土卫六上的超级节点

计算土卫六上的超级节点
EN

Stack Overflow用户
提问于 2016-03-24 08:15:15
回答 2查看 153关注 0票数 6

在我的系统中,我要求节点上的边数必须存储为顶点上的内部属性,以及特定的传出边上以顶点为中心的索引。这自然要求我在所有数据加载完成后,计算节点上的边缘数。我这样做如下:

代码语言:javascript
复制
long edgeCount = graph.getGraph().traversal().V(vertexId).bothE().count().next();

但是,当我将测试扩展到某些节点是“超级”节点时,我会在上面的一行中得到以下异常:

代码语言:javascript
复制
Caused by: com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=127.0.0.1(127.0.0.1):9160, latency=4792(4792), attempts=1]org.apache.thrift.transport.TTransportException: Frame size (70936735) larger than max length (62914560)!
    at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:28) ~[astyanax-thrift-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:153) ~[astyanax-thrift-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:119) ~[astyanax-core-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:352) ~[astyanax-core-3.8.0.jar!/:3.8.0]
    at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$4.execute(ThriftColumnFamilyQueryImpl.java:538) ~[astyanax-thrift-3.8.0.jar!/:3.8.0]
    at com.thinkaurelius.titan.diskstorage.cassandra.astyanax.AstyanaxKeyColumnValueStore.getNamesSlice(AstyanaxKeyColumnValueStore.java:112) ~[titan-cassandra-1.0.0.jar!/:na]

解决这个问题的最好方法是什么?我应该简单地增加帧大小,还是有更好的方法来计算节点上的边数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-28 15:34:26

是的,你需要增加帧大小。当您有一个超级节点时,需要从存储后端读取一个非常大的行,这在OLAP中甚至是正确的。我同意,如果您计划在图中的每个顶点上计算这个值,这最好作为OLAP操作来完成。

在这个泰坦邮件列表线程中可以找到这个和其他一些好的提示。请记住,链接是非常古老的,所以这些概念仍然有效,但是一些Titan配置属性的名称可能有所不同。

票数 3
EN

Stack Overflow用户

发布于 2016-03-28 05:20:26

这样的任务本质上是OLAP,应该使用分布式系统来执行,而不是使用遍历。

GraphComputer中有一个名为TinkerPop 3的概念,它可以用来执行这样的任务。

它基本上允许您运行Gremlin查询,这些查询将在多台机器上进行评估。

例如,可以使用SparkGraphComputer阿帕奇火花之上运行查询。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36195697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档