Я использую 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
, но ни одно решение не помогло мне. Любое предложение о том, как решить эту проблему?