Осмос выбрасывает странную ошибку Java
Я пытался импортировать файл north-america-latest.osm.pbf (из Geofabrik) в базу данных Postgres в течение некоторого времени. После тщательного просмотра подробной страницы использования вики я настроил базу данных на включение всех необходимых таблиц (pgSnapshot) с помощью включенных сценариев sql. Я также удостоверился, что осмос работает должным образом, пропустив файл меньшего размера (Антарктида), и я получил ожидаемые результаты. Однако, когда я пытаюсь сделать тот же процесс с файлом Северной Америки, я получаю ошибку, которая отличается от других, о которых сообщалось в Интернете. Я пытаюсь получить эти данные на сервер, загрузка в мой локальный, похоже, в порядке.
Вот мой код (через командную строку):
C:\Users\eddie\Desktop>osmosis --read-pbf-fast north-america-latest.osm.pbf --log-progress interval=3000 --write-pgsql nodeLocationStoreType="TempFile" host=1*.8*.*.*0* database=osm postgresSchema=osm_updates user=eddie password=***
Вот сообщение об ошибке, которое я получаю:
SEVERE: Thread for task 1-read-pbf-fast failed
org.springframework.dao.EmptyResultDataAccessException: Incorrect result
size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:495)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:500)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateDBVersion(SchemaVersionValidator.java:64)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateVersion(SchemaVersionValidator.java:47)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.impl.CopyFilesetLoader.run(CopyFilesetLoader.java:77)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.PostgreSqlCopyWriter.complete(PostgreSqlCopyWriter.java:117)
at org.openstreetmap.osmosis.core.progress.v0_6.EntityProgressLogger.complete(EntityProgressLogger.java:82)
at org.openstreetmap.osmosis.pbf2.v0_6.PbfReader.run(PbfReader.java:96)
at java.lang.Thread.run(Unknown Source)
Jul 19, 2018 8:28:24 AM org.openstreetmap.osmosis.core.Osmosis main
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks failed.
at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:92)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Я использую osmos .46, Postgres/PostGis 10/2.4 на Windows 10 с 12 ГБ ОЗУ и 2 процессорами Intel 2,4 ГГц.
ОБНОВЛЕНИЕ: ошибка теперь происходит, даже когда я запускаю меньшие файлы. Кроме того, осмос ведет себя так, как будто он обрабатывает больший файл (достигает узла 4614331685 для Антарктиды), как видно из сообщений регистратора хода выполнения. Загрузка данных OSM для Канады на мой локальный компьютер прошла без каких-либо проблем, поэтому проблема, вероятно, связана с сервером, к которому я пытаюсь подключиться. Если у кого-то есть какие-либо подсказки относительно того, как расшифровать сообщение об ошибке, я бы хотел их услышать!
1 ответ
Я начал работать с осмосом, приняв совет @mmd об отключении проверки схемы. Даже несмотря на то, что я запустил сценарии pgsnapshot и успешно помещал туда данные, что-то в работе со всей Северной Америкой, казалось, сбило их с толку. Я обновлю этот ответ после последующих обновлений базы данных.