首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Janusgraph : Cassandra节俭超时异常

Janusgraph : Cassandra节俭超时异常
EN

Stack Overflow用户
提问于 2020-03-02 07:40:56
回答 1查看 287关注 0票数 0

我使用的是内置格式的Janusgraph,后端作为cassandrathrift。这是我给janusgraph和cassandra的财产:

代码语言:javascript
复制
storage.backend=cassandrathrift
storage.cassandra.keyspace=t_graph
storage.cassandra.frame-size-mb=128
storage.hostname=10.XX.XX.XX,20.XX.XX.XX,30.XX.XX.XX

我有一个查询,它找出了一个特定顶点的追随者数。以下是这方面的代码:

代码语言:javascript
复制
public class FollowCountNormal {

    private static JanusGraph graph;
    private static GraphTraversalSource traversalSource;

    public static void main(String[] args) {
        create();
        System.exit(0);
    }

    public static JanusGraph create() {

        graph = JanusGraphFactory.open("/resources/jp.properties");
        traversalSource = graph.traversal();
        getAllEdges();
        return graph;
    }

    static long getAllEdges(){

        try{
            GraphTraversal<Vertex, Vertex> allV = traversalSource.V();
            GraphTraversal<Vertex, Vertex> gt = allV.has("vid", "supernode");
            GraphTraversal<Vertex, Long> c = gt.inE()           
                    .count();
            long l = c.next();
            System.out.println("All edges = "+l);
            graph.tx().commit();
            return l;
        }catch (Exception e) {
            System.out.println("Error while fetching the edges for : ");
            e.printStackTrace();
        }

        return -1;
    }
}

如果顶点有有限数量的传入边,则此代码工作良好(即工作精细是跟随者计数小于100000)。但如果追随者数以百万计,我有以下例外:

造成原因: org.janusgraph.diskstorage.PermanentBackendException:存储后端永久故障在org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.convertException(CassandraThriftKeyColumnValueStore.java:263) at org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:162) at org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:105) at org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice(CassandraThriftKeyColumnValueStore.java:94) at org.janusgraph.diskstorage.keycolumnvalue.KCVSProxy.getSlice(KCVSProxy.java:77) at org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache$2.call(ExpirationKCVSCache.java:100) at org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache$2.call(ExpirationKCVSCache.java:96) at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) at com.google.common.cache.LocalCache$Segment.loadSync( org.apache.cassandra.thrift.TimedOutException:). 50种常见帧被忽略,原因是: org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696) at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633) at org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559) atorg.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741) at org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725) at org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:143) .省略了58个常见帧

我在网上找了很多这样的帖子:

link1

但对我来说没有解决办法。对如何解决这个问题有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-02 07:55:26

将存储后端更改为cql和其他与cql相关的属性为我解决了这个问题。以下是我使用的属性:

代码语言:javascript
复制
storage.backend=cql
storage.cql.keyspace=t_graph
storage.cql.read-consistency-level=ONE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60484409

复制
相关文章

相似问题

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