Janusgraph OLAP-запрос вне консоли gremlin - PullRequest
0 голосов
/ 06 марта 2019

У меня есть график, на котором некоторые узлы имеют миллионы входящих ребер. Мне нужно периодически получать количество ребер таких узлов. Я использую Кассандар в качестве хранилища данных. Запрос:

g.V().has('vid','qwerty').inE().count().next()

Вся доступная документация объясняет, как использовать apache spark для этого с консоли gremlin. Могу ли я как-нибудь написать логику вне консоли gremlin как задание spark и периодически запускать id на кластере hadoop.

Вот вывод запроса на консоли gremlin, когда я не использую spark:

14108889 [gremlin-server-session-1] WARN org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor - Обработка исключений сценария по запросу [RequestMessage {, requestId = c3d902b7-0fdd-491d-8639-546963212474, op = 'eval', процессор = «сессии», арг = {гремлин = g.V (). есть ( 'VID', 'букв на'). в Е (). Count (). Следующий (), сеанс = 2831d264-4566-4d15-99c5-d9bbb202b1f8, привязки = {}, manageTransaction = false, batchSize = 64}}]. TimedOutException () в 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) в org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftKeyColumnValueStore.getSlice (CassandraThriftKeyColumnValueStore.java:100) в org.janusgraph.diskstorage.keycolumnvalue.KCVSProxy.getSlice (KCVSProxy.java:82) в org.janusgraph.diskstorage.keycolumnvalue.cache.ExpirationKCVSCache.getSlice (ExpirationKCVSCache.java:129) в org.janusgraph.diskstorage.BackendTransaction $ 2.call (BackendTransaction.java:288) в org.janusgraph.diskstorage.BackendTransaction $ 2.call (BackendTransaction.java:285) в org.janusgraph.diskstorage.util.BackendOperation.executeDirect (BackendOperation.java:69) в org.janusgraph.diskstorage.util.BackendOperation.execute (BackendOperation.java:55) в org.janusgraph.diskstorage.BackendTransaction.executeRead (BackendTransaction.java:470) в org.janusgraph.diskstorage.BackendTransaction.edgeStoreMultiQuery (BackendTransaction.java:285) в org.janusgraph.graphdb.database.StandardJanusGraph.edgeMultiQuery (StandardJanusGraph.java:441) в org.janusgraph.graphdb.transaction.StandardJanusGraphTx.lambda $ executeMultiQuery $ 3 (StandardJanusGraphTx.java:1054) в org.janusgraph.graphdb.query.profile.QueryProfiler.profile (QueryProfiler.java:98) в org.janusgraph.graphdb.query.profile.QueryProfiler.profile (QueryProfiler.java:90) в org.janusgraph.graphdb.transaction.StandardJanusGraphTx.executeMultiQuery (StandardJanusGraphTx.java:1054) в org.janusgraph.graphdb.query.vertex.MultiVertexCentricQueryBuilder.execute (MultiVertexCentricQueryBuilder.java:113) в org.janusgraph.graphdb.query.vertex.MultiVertexCentricQueryBuilder.edges (MultiVertexCentricQueryBuilder.java:133) в org.janusgraph.graphdb.tinkerpop.optimize.JanusGraphVertexStep.initialize (JanusGraphVertexStep.java:95) в org.janusgraph.graphdb.tinkerpop.optimize.JanusGraphVertexStep.processNextStart (JanusGraphVertexStep.java:101) в org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext (AbstractStep.java:143) в org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.hasNext (ExpandableStepIterator.java:42) вorg.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep.processAllStarts (ReducingBarrierStep.java:83) в org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep.processNextStart (ReducingBarrierStep.java:113) в org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next (AbstractStep.java:128) в org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next (AbstractStep.java:38) в org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next (DefaultTraversal.java:200) в java_util_Iterator $ next.call (неизвестный источник) в org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:48) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:113) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:117) в Script13.run (Script13.groovy: 1) в org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval (GremlinGroovyScriptEngine.java:843) в org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval (GremlinGroovyScriptEngine.java:548) в javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:233) в org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines.eval (ScriptEngines.java:120) в org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda $ Eval $ 0 (GremlinExecutor.java:290) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) at java.lang.Thread.run (Thread.java:748)

Однако g.V().has('vid','qwerty').inE().limit(10000).count().next() работает нормально и дает ==>10000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...