Как сказал Стивен, это будет дорогой запрос для большого графика. Однако я смог запустить следующий код Python с использованием Gremlin-Python и Neptune без проблем.
mymap = (
g.V().
project('v','edges').
by(__.valueMap()).
by(__.outE().valueMap().fold())).toList()
print(mymap)
Мне не удалось выполнить другой запрос (ниже) даже из консоли Gremlin, пока я не увеличил объем данных, которые могут быть приняты клиентом, или не ограничил результат запроса. Даже если у меня небольшой график, ваш второй запрос выдает размер результирующего кадра по умолчанию в 64 КБ, для которого настроена консоль Gremlin. Это прямо показывает, что это дорогой запрос! Тем не менее, для простоты я бы использовал приведенный выше запрос, а не форму store
и cap
, но на любом большом графике в целом это немного против паттерна, поскольку он потенциально может возвращать огромные суммы данные. Что касается ошибки из вашего второго запроса, я смог запустить ее на консоли, когда добавил шаг лимита, но все еще видел проблемы с Python.
# Notice the added limit which allows it to work from the console
g.V().store('vertices').by(__.valueMap()).
outE().limit(10).store('edges').by(__.valueMap()).
cap('vertices', 'edges').toList()
Даже с limit(10)
Я все еще вижу ту же ошибку, что и вы, когда используете запрос из Python. Похоже, что клиент Python не может обработать результат запроса. Это требует дополнительного расследования. Пока вы можете просто использовать project
версию запроса.