Импорт GraphML в Titan

Я новичок в мире Титанов. Я хочу импортировать данные, хранящиеся в файле GraphML, в базу данных.

  1. Скачал titan-1.0.0-hadoop1
  2. Я запускаю ./titan.sh
  3. Я запускаю ./gremlin.sh
  4. В консоли Gremlin я написал:

    :remote connect tinkerpop.server ../conf/remote.yaml
    
  5. Далее я написал:

    graph.io(IoCore.graphml()).readGraph("/tmp/file.graphml")
    
  6. Я получил сообщение: Нет такого свойства: граф для класса: groovysh_evaluate

Не могли бы вы помочь мне?

IMO самые интересные логи от gremlin-server.log:

84   [main] INFO  org.apache.tinkerpop.gremlin.server.GremlinServer  - Configuring Gremlin Server from conf/gremlin-server/gremlin-server.yaml
158  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics ConsoleReporter configured with report interval=180000ms
160  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
196  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics JmxReporter configured with domain= and agentId=
197  [main] INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager  - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
1111 [main] WARN  org.apache.tinkerpop.gremlin.server.GremlinServer  - Graph [graph] configured at [conf/gremlin-server/titan-berkeleyje-server.properties] could not be instantiated and will not be available in Gremlin Server.  GraphFactory message: GraphFactory could not instantiate this Graph implementation [class com.thinkaurelius.titan.core.TitanFactory]
java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class com.thinkaurelius.titan.core.TitanFactory]
...
1113 [main] INFO  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
1499 [main] INFO  org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines  - Loaded nashorn ScriptEngine
2044 [main] INFO  org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines  - Loaded gremlin-groovy ScriptEngine
2488 [main] WARN  org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor  - Could not initialize gremlin-groovy ScriptEngine with scripts/empty-sample.groovy as script could not be evaluated - javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
2488 [main] INFO  org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor  - Initialized GremlinExecutor and configured ScriptEngines.
2581 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Could not instantiate configured serializer class - org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 - it will not be available. There is no graph named [graph] configured to be used in the useMapperFromGraph setting
2582 [main] INFO  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
2719 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Could not instantiate configured serializer class - org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 - it will not be available. There is no graph named [graph] configured to be used in the useMapperFromGraph setting
2720 [main] WARN  org.apache.tinkerpop.gremlin.server.AbstractChannelizer  - Could not instantiate configured serializer class - org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 - it will not be available. There is no graph named [graph] configured to be used in the useMapperFromGraph setting
...

person Domel    schedule 31.08.2016    source источник
comment
вы внесли какие-либо изменения в remote.yaml или gremlin-server.yaml?   -  person Jason Plurad    schedule 31.08.2016
comment
есть ли ошибки в gremlin-server.log? вы видите там строчку, похожую на INFO org.apache.tinkerpop.gremlin.server.GremlinServer - Graph [graph] was successfully configured via [conf/gremlin-server/titan-berkeleyje-server.properties].?   -  person Jason Plurad    schedule 31.08.2016
comment
@JasonPlurad, нет, я не редактирую remote.yaml или gremlin-server.yaml   -  person Domel    schedule 01.09.2016
comment
@JasonPlurad Когда я выполняю шаг 4 в gremlin-server.log, я не вижу ...was successfully configured via...   -  person Domel    schedule 01.09.2016
comment
обновил свой ответ ниже. проблема может заключаться в правах доступа к файлам в каталоге $TITAN_HOME.   -  person Jason Plurad    schedule 02.09.2016
comment
если это не поможет, то было бы очень полезно предоставить трассировку стека для java.lang.RuntimeException.   -  person Jason Plurad    schedule 02.09.2016


Ответы (2)


Вам нужно построить график. ключевое слово graph нигде в вашем скрипте не объявлено.

person Alaa Mahmoud    schedule 31.08.2016
comment
Когда я написал в консоли Gremlin Graph graph = TinkerFactory.createModern();, а затем graph.io(IoCore.graphml()).readGraph("/tmp/file.graphml"), я получил то же сообщение. - person Domel; 31.08.2016

Это кратко описано в документации по серверу Titan, но это легко не заметить.

:> - это команда "submit", которая отправляет Gremlin в этой строке на текущий активный пульт.

На шаге 5 вам необходимо отправить команду сценария на удаленный сервер. В консоли Gremlin это можно сделать, начав команду с :submit или :> для сокращения.

:> graph.io(IoCore.graphml()).readGraph("/tmp/file.graphml")

Если вы не отправите сценарий на удаленный сервер, консоль Gremlin попытается обработать сценарий в JVM консоли. graph не определен локально, поэтому на шаге 6 вы увидели ошибку.

Обновление: судя по вашему gremlin-server.log, похоже, что проблема в том, что пользователь, запускающий Titan с ./bin/titan.sh start, не имеет соответствующих прав доступа к файлу для создания каталога (db/berkeley), используемого конфигурацией графика по умолчанию (titan-berkeleyje-server.properties). Попробуйте обновить права доступа к файлам в каталоге $TITAN_HOME.

person Jason Plurad    schedule 31.08.2016
comment
Я получаю то же сообщение. На шаге 6 я пробую: gremlin> graph.io(IoCore.graphml()).readGraph("/tmp/file.graphml") и gremlin> :> graph.io(IoCore.graphml()).readGraph("/tmp/file.graphml") - person Domel; 31.08.2016