2016-01-13 3 views
0

Я использую Titan DB (titan-0.5.4-hadoop2) над cassandra.Titan DB 0.5.4 (titan-0.5.4-hadoop2), Исключение после импорта/загрузки данных с использованием loadGraphSON()

Попытка экспорта/импорта данных в формате JSON.

Действие сохранения происходит успешно, но после команды loadGraphSON() я получаю исключение.

Код:

g = TitanFactory.open('../conf/titan-db.properties') 
titangraph[cassandra:[localhost]] 
g.saveGraphSON('../Test1233.json') 
g.commit() 
g.loadGraphSON('../Test1233.json') 

Трассировка стека:

Not a single key: roles. Use addProperty instead 
Display stack trace? [yN] 
Not a single key: roles. Use addProperty instead 
Display stack trace? [yN] y 
java.lang.UnsupportedOperationException: Not a single key: roles. Use addProperty instead 
    at com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.setProperty(StandardTitanTx.java:755) 
    at com.thinkaurelius.titan.graphdb.vertices.AbstractVertex.setProperty(AbstractVertex.java:244) 
    at com.thinkaurelius.titan.graphdb.vertices.AbstractVertex.setProperty(AbstractVertex.java:239) 
    at com.tinkerpop.blueprints.util.wrappers.batch.BatchGraph$BatchVertex.setProperty(BatchGraph.java:492) 
    at com.tinkerpop.blueprints.util.io.graphson.GraphSONUtility.vertexFromJson(GraphSONUtility.java:136) 
    at com.tinkerpop.blueprints.util.io.graphson.GraphSONReader.inputGraph(GraphSONReader.java:158) 
    at com.tinkerpop.blueprints.util.io.graphson.GraphSONReader.inputGraph(GraphSONReader.java:104) 
    at com.tinkerpop.blueprints.util.io.graphson.GraphSONReader.inputGraph(GraphSONReader.java:88) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:43) 
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) 
    at com.tinkerpop.gremlin.groovy.loaders.GraphLoader$_load_closure14.doCall(GraphLoader.groovy:126) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaMethod.invoke(ClosureMetaMethod.java:80) 
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271) 
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 
    at groovysh_evaluate.run(groovysh_evaluate:84) 
    at groovysh_evaluate$run.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
    at groovysh_evaluate$run.call(Unknown Source) 
    at org.codehaus.groovy.tools.shell.Interpreter.evaluate(Interpreter.groovy:67) 
    at org.codehaus.groovy.tools.shell.Interpreter$evaluate.call(Unknown Source) 
    at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:152) 
    at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:114) 
    at org.codehaus.groovy.tools.shell.Shell$leftShift$0.call(Unknown Source) 
    at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:88) 
    at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$work(InteractiveShellRunner.groovy) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1079) 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:148) 
    at org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:100) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:272) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137) 
    at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:57) 
    at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run(InteractiveShellRunner.groovy) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1079) 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:148) 
    at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:66) 
    at com.thinkaurelius.titan.hadoop.tinkerpop.gremlin.Console.<init>(Console.java:78) 
    at com.thinkaurelius.titan.hadoop.tinkerpop.gremlin.Console.<init>(Console.java:91) 
    at com.thinkaurelius.titan.hadoop.tinkerpop.gremlin.Console.main(Console.java:95) 
gremlin> 
+1

Итак, вы экспортируете и импортируете на тот же график? Я предполагаю, что это приведет к нарушению всех уникальных ограничений, которые вы ввели в свою схему. У вас такая же ошибка при импорте в пустое пространство ключей Titan? – Ralf

ответ

0

Вы должны иметь свойство вершина определяется в вашей схеме Titan с SET или по мощности LIST. Если у вас есть свойство коллекции, а не свойство SINGLE, то нужно использовать addProperty(). Это ошибка, которую вы видите.

Как описано в этом post, утилиты GraphSON, предоставляемые Blueprints 2.5.0, не поддерживают расширенную схему схемы Titan. Шаг loadGraphSON() Gremlin, который вы вызываете, использует под обложками BatchGraph, как вы можете видеть в трассировке стека. Вероятно, это исправлено в последнем выпуске версии Titan 1.0, поэтому вы должны рассмотреть возможность обновления.

Смежные вопросы