Сбой импорта графона JanusGraph 3.x на предварительном json
У кого-нибудь еще есть эта проблема с импортом prettified json/graphson в JanusGraph?
Точно такой же файл, но без предварительной обработки (без возврата каретки, табуляций, пробелов) будет импортирован без ошибок, но если он предварительно обработан, произойдет сбой со следующей ошибкой:
graph.io(graphson()).readGraph("data/tgraph2.json")
Could not deserialize the JSON value as required. Nested exception: java.lang.InstantiationException: Cannot deserialize the value with the detected type contained in the JSON ('tinker:graph') to the type specified in parameter to the object mapper (class java.util.LinkedHashMap). Those types are incompatible. at [Source: (ByteArrayInputStream); line: 1, column: 3]
Обратите внимание, что при редактировании файла для удаления первого разрыва строки вручную сообщение об ошибке изменяется на
... at [Source: (ByteArrayInputStream); line: 1, column: 12]
и т. д., так что это определенно проблема с пробелами в файле.
Версия 3.х
Конечно, это нежелательное поведение. json должен работать одинаково независимо от того, преттеттирован ли он с помощью пробелов или минимизирован.
1 ответ
Следует помнить, что существует две формы GraphSON. В одной форме весь файл не является единым документом JSON, а представляет собой каждую строку. Каждая строка представляет собой список смежности для вершины.
Это формат GraphSON по умолчанию, и он предназначен для потоковой передачи и позволяет легко разбивать файл для многопоточных операций. Другая форма представляет собой единый документ JSON, содержащий все вершины, а затем и все ребра.
Форматы описаны здесь