Как экспортировать удаленный граф в json с помощью tinkerpop gremlin и neptune?

Я пытаюсь экспортировать весь удаленный граф в json. Когда я использую следующий код, получается пустой файл. Я использую драйвер Gremlin 3.3.2, так как это та же версия в базе данных нижнего графа, AWS Neptune.

var traversal = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(getCluster()))
traversal.getGraph().io(graphson()).writeGraph("my-graph.json");

Как можно заполнить график данными, чтобы их можно было экспортировать?


person James Render    schedule 01.07.2019    source источник


Ответы (4)


Я также разместил это в списке пользователей Gremlin.

Вот код, который сделает это за вас с Neptune и должен работать с большинством реализаций сервера Gremlin, как мне кажется.

https://github.com/awslabs/amazon-neptune-tools/tree/master/neptune-export

Результаты экспорта можно использовать для загрузки с помощью массового загрузчика Neptune, если вы выберете экспорт в формате CSV.

Надеюсь, что это будет полезно

Если это больше, чем вам нужно, надеюсь, это, по крайней мере, даст вам несколько полезных советов.

С размещенными графами, включая Neptune, нередко можно обнаружить, что они не раскрывают объект Graph и не предоставляют доступ к классам io ().

person Kelvin Lawrence    schedule 02.07.2019
comment
Я использовал упомянутый проект aws github и выполнил следующую команду, которая не показывала никаких результатов: ‹projectFolderOfAwsNeptuneExport› \ bin ›neptune-export.sh export-pg -e ‹clusterName› / ‹Ip›: ‹port› -d s3: // ‹bucketName› / ‹folder› - person CdVr; 22.04.2020
comment
См. Новый ответ Яна Робинсона. Целью экспорта должна быть локальная файловая система. - person Kelvin Lawrence; 23.04.2020

Шаг Gremlin io () не поддерживается в Neptune. Вот документация Нептуна, рассказывает о другом различии между реализацией Gremlin Amazon Neptune и реализацией TinkerPop.

person Ankit Gupta    schedule 01.07.2019
comment
так что этот подход не сработает, есть ли способ экспортировать график как json, а затем загрузить его в экземпляр nepture? - person James Render; 02.07.2019
comment
Я создал образ докера, на котором запущен gremlin-server, заполнил его данными, но все еще не смог получить данные из графика. Думаю, проблема в том, как я получаю ссылку на график. - person James Render; 02.07.2019

Принимая во внимание ценную обратную связь от Анкита и Кельвина, я сосредоточился на использовании локального сервера gremlin для обработки обработки данных.

Получив данные на локально работающем сервере, сгенерировав скрипт gremlin из модели сущностей в памяти, я обратился к ним через консоль Gremlin и выполнил следующее:

~/apache-tinkerpop-gremlin-console-3.3.7/bin/gremlin.sh
gremlin> :remote connect tinkerpop.server conf/remote.yaml
gremlin> :> graph.io(graphson()).writeGraph("my-graph.json")
==>null

Это поместит my-graph.json файл в /opt/gremlin-server/ контейнера докеров. Я извлек его с помощью docker cp $(docker container ls -q):/opt/gremlin-server/my-graph.json .

Затем я могу использовать эти данные для заполнения тестового контейнера gremlin-server для запуска интеграционных тестов с графической базой данных.

person James Render    schedule 04.07.2019

neptune-export не поддерживает прямой экспорт в S3. Вам нужно будет экспортировать в локальную файловую систему, а затем отдельно скопировать файлы в S3.

person Ian Robinson    schedule 23.04.2020