【问题标题】:Janusgraph : Cassandra thrift timeout exceptionJanusgraph:Cassandra thrift 超时异常
【发布时间】:2020-03-02 07:40:56
【问题描述】:

我正在使用嵌入式格式的 Janusgraph,后端为 cassandrathrift。以下是 janusgraph 和 cassandra 的属性:

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

我有一个查询,可以找出特定顶点的关注者数量。这是代码:

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) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:162) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:105) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice(CassandraThriftKeyColumnValueStore.java:94) 在 org.janusgraph.diskstorage.keycolumnvalue.KCVSProxy.getSlice(KCVSProxy.java:77) 在 org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache$2.call(ExpirationKCVSCache.java:100) 在 org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache$2.call(ExpirationKCVSCache.java:96) 在 com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742) 在 com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) 在 com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) ...省略了50个常见框架原因: org.apache.cassandra.thrift.TimedOutException: null at org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14696) 在 org.apache.cassandra.thrift.Cassandra$multiget_slice_result$multiget_slice_resultStandardScheme.read(Cassandra.java:14633) 在 org.apache.cassandra.thrift.Cassandra$multiget_slice_result.read(Cassandra.java:14559) 在 org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) 在 org.apache.cassandra.thrift.Cassandra$Client.recv_multiget_slice(Cassandra.java:741) 在 org.apache.cassandra.thrift.Cassandra$Client.multiget_slice(Cassandra.java:725) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice(CassandraThriftKeyColumnValueStore.java:143) ...省略了58个常用框架

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

link1

但没有解决方案对我有用。关于如何解决这个问题的任何建议?

【问题讨论】:

    标签: java graph cassandra janusgraph


    【解决方案1】:

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

    storage.backend=cql
    storage.cql.keyspace=t_graph
    storage.cql.read-consistency-level=ONE
    

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2015-01-28
      • 2015-11-29
      • 2013-06-02
      相关资源
      最近更新 更多