¿Importar grandes conjuntos de datos con osm2psql? [cerrado]

8

Mi pregunta es similar a la importación lenta a través de osm2pgsql a la base de datos postgresql y la optimización de las importaciones de osm2pgsql para datos OSM, pero como actualmente tenemos algunos problemas para importar un gran conjunto de datos OSM, abro uno nuevo.

¿Cuál es la mejor manera de importar un gran conjunto de datos (OSM Export of Europe) en una base de datos postgres?

Nuestra computadora tiene 32 GB de RAM ... así que podría usar todo eso.

Probamos un par de parámetros, pero no tuvimos éxito ... el último intento usamos el

osm2pgsql -c -S /usr/share/osm2pgsql/default.style --slim -d osm-europe -U postgres -C 25000 europe-latest.osm.pbf

Pero nos quedamos sin memoria a pesar de que nuestro servidor tiene 32 GB de RAM disponibles.

pending_ways failed: out of memory for query result
(7)
Error occurred, cleaning up

¿Cómo mejoramos nuestro comando de importación?

Incluso si lleva más tiempo ... Pero necesitamos tener los datos importados en nuestra base de datos postgres.

¿Recomendaría usar un EC2 para la tarea o nuestra configuración debería funcionar con diferentes parámetros?

Georg
fuente

Respuestas:

7

Su computadora debería estar bien para importar Europa.

Dado el tamaño de su conjunto de datos y la computadora, recomendaría algo como esto


Supongo que tiene una CPU de 8 hilos, si no, ajuste --number-processes.

No necesita 25 GB de RAM para caché solo con Europa.

Para Europa, los nodos planos deberían ser más pequeños y más rápidos que el almacenamiento en la base de datos de posiciones de nodos.

Si todavía hay problemas, verifique que tenga una versión de osm2pgsql usando el espacio de ID de 64 bits y, de ser así, verifique la configuración de PostgreSQL. Podrías estar llenando tu disco. Intente ajustar su configuración en postgresql.conf.

Paul Norman
fuente
muchas gracias ... durante el fin de semana mi importación tuvo éxito con mi comando y sin ningún otro proceso ejecutándose en nuestra máquina ... ¡pero muchas gracias!
Georg
- Los nodos planos pueden no funcionar con el binario de Windows de acuerdo con wiki.openstreetmap.org/wiki/Osm2pgsql#Binary
AndreJ
8

Importé un archivo Planet en una máquina de 24 Gb (Ubuntu Trusty) con lo siguiente ...

bzcat planet-latest.osm.bz2 | 
osm2pgsql --verbose -U YourUser --flat-nodes flat-nodes --keep-coastlines --cache 24000 --hstore --hstore-add-index --tablespace-index pg_default --exclude-invalid-polygon --number-processes 6 --unlogged --cache-strategy dense --extra-attributes --slim -H localhost -d planetosm --style ../my.style planet-latest.osm.bz2

Tomó aproximadamente 5 días, la última mitad en el lado de la base de datos ... en lugar de la importación real

Ajusté Postgres con lo siguiente para la importación

autovacuum = off (default #autovacuum = on)
checkpoint_segments = 60 (default #checkpoint_segments = 3 # in logfile      
segments, min 1, 16MB each)
maintenance_work_mem = 256MB ( default #maintenance_work_mem = 16MB # min 1MB)
work_mem = 256MB (default #work_mem = 1MB  # min 64kB)
Mark Cupitt
fuente
muchas gracias ... durante el fin de semana mi importación tuvo éxito con mi comando y sin ningún otro proceso ejecutándose en nuestra máquina ... ¡pero muchas gracias!
Georg
De nada. Me tomó un mes para hacerlo bien. Saludos
Mark Cupitt