Я пытаюсь проанализировать файл CSV и создать узлы и края в Cosmos db с помощью клиента gremlin-java (https://github.com/Azure-Samples/azure-cosmos-db-graph-java-getting-started).
Некоторые запросы, которые я изменил в этой программе: Для добавления данных: Отправляя этот запрос Gremlin 87246:
gV (). has ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120 Л'). fold (). coalesce (развёртывание (), addV ('sub_schedule'). property ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120 Л L') ') .property (' имя ',' КОНСОЛИДИРОВАННЫЙ ГРАФИК 1120 Л '))
Для создания края:
gV (). hasLabel ('родитель'). has ('id', '1120'). addE ('has'). to (gV (). hasLabel ('state'). has ('id', 'FD '))
После успешного запуска почти в течение 6 часов он дает странную ошибку:
Exception in thread "main" java.util.concurrent.ExecutionException: java.io.IOException: An existing connection was forcibly closed by the remote host
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at GetStarted.WriteWithOriginalCSVData.main(WriteWithOriginalCSVData.java:158)
Caused by: java.io.IOException: An existing connection was forcibly closed by the remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:221)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:899)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:275)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:652)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:575)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:489)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:451)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
at java.lang.Thread.run(Thread.java:745)
Может кто-нибудь, пожалуйста, скажите мне возможные причины этого?
Чтобы упомянуть, я вызываю этот Java-клиент удаленно со своего ноутбука через открытое соединение и нажимаю на сервисы Azure (в другом месте).
Сначала я подумал, что это может быть из-за моего подключения к Интернету. Но он точно выдает ошибку, когда он выполнил несколько запросов гремлина 87-88k. Может кто-нибудь, пожалуйста, дайте мне знать, где я здесь ошибаюсь?
нет конкретного запроса, который он не выполняет. Я запускал это 4 раза, и когда я записал, это был последний запрос, отправленный на сервер: gV (). Has ('id', '1120-L CONSOLIDATED SCHEDULE L'). Fold (). Coalesce (deploy () , addV ('sub_schedule'). property ('id', 'КОНСОЛИДИРОВАННОЕ РАСПИСАНИЕ 1120-L L'). property ('name', '1120-L CONSOLIDATED SCHEDULE L')). Но с первой попытки все прошло успешно. Итак, опять же, без особого запроса. На этот раз он обработал только до 30 тысяч запросов.
Это было решено путем пакетной обработки данных для каждого соединения. Спасибо. Но логика повторных попыток - это еще одна вещь, которую нужно создать, если вы тестируете удаленно.
Вы знаете, какой запрос выполняется при закрытии? Похоже, что запрос не работает и заставляет сервер отключать от вас соединение ... Можете ли вы добавить отладку, чтобы сократить набор данных?