Янусграф: исключение тайм-аута Кассандры - PullRequest
0 голосов
/ 02 марта 2020

Я использую 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 java: 263) .CassandraThriftKeyColumnValueStore.convertException на org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice (. CassandraThriftKeyColumnValueStore * * тысяча двадцать-одна: 162) в org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice (CassandraThriftKeyColumnValueStore. java: 105) в org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice (CassandraThriftKeyColumnValueStore. * 1023.Col_Sky.Cr. : 77) в org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache $ 2.call (ExpirationKCVSCache. java: 100) в org.janusgraph.diskstorage.keycolumnva lue.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.loadSyn c (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: 14696rara). org. .Cassandra $ multiget_slice_result $ multiget_slice_resultStandardScheme.read (Cassandra. java: 14633) в org. apache .cassandra.thrift.Cassandra $ multiget_slice_result.read (Cassandra * java. 149). .TServiceClient.receiveBase (TServiceClient. java: 78) в орг. apache .cassandra.thrift.Cassandra $ Client.recv_multiget_slice (Кассандра. java: 741) в орг. apache .cassandra.thrift.Cass $ Client.multiget_slice ( . Cassandra java: 725) в org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getNamesSlice (CassandraThriftKeyColumnValueStore java:. 143) ... 58 общие рамки опущена

Я искал много сообщений в сети, как это:

link1

, но ни одно решение не помогло мне. Любое предложение о том, как решить эту проблему?

1 Ответ

0 голосов
/ 02 марта 2020

Изменение серверной части хранилища на cql и других свойств, относящихся к cql, решило проблему для меня. Вот свойства, которые я использовал:

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