Suite

Approche alternative pour le chargement des données osm2pgsql


Je deviens lentement fou en essayant de terminer avec succès une importation de données OSM et j'aimerais trouver une approche alternative. Ce que je tente est d'une simplicité frustrante mais échoue à plusieurs reprises.

À l'origine, j'ai essayé d'importer le dernier fichier planet .osm.bz2 en mode slim, mais cela a échoué avec une erreur d'analyse. Ensuite, j'ai essayé d'importer le .pbf en mode slim et cela avançait si lentement que cela aurait pris trois mois. Ensuite, j'ai augmenté la mémoire de ma machine virtuelle à 48 Go et j'ai supprimé le-sl'argument du mode slim et l'importation a échoué lorsqu'elle a manqué de mémoire. Enfin, j'ai essayé d'importer le pbf en mode slim avec un cache de nœuds de 44 Go et environ à mi-chemin des nœuds, après avoir travaillé plusieurs jours, cela a échoué avecÉchec de la compression Zlib (code -3, vérification des données incorrecte).

Il doit y avoir un moyen plus simple, plus rapide et plus fiable de le faire. Idéalement, je voudrais simplement télécharger le fichier de données Postgres de quelqu'un d'autre, le joindre à ma base de données, m'asseoir et me détendre.

J'ai besoin que les données soient dans le schéma osm2pgsql, mais je me fiche de savoir comment elles y arrivent, tant qu'elles n'ont pas plus de quelques mois. Est-ce que quelqu'un sait pourquoi c'est si compliqué et comment le rendre plus simple ?


La documentation osm2pgsql suggèreosm2pgsql -c -d gis --slim -C --flat-nodes planète-dernière.osm.pbf.

  • est de 24 000 sur les machines avec 32 Go ou plus de RAM ou environ 75 % de la mémoire en Mio sur les machines avec moins
  • est un emplacement où un fichier de 24 Go peut être enregistré.

Cela fonctionne, et sur une machine rapide, cela prendra moins d'une journée.

Parce que vous avez beaucoup de RAM, j'irais avec 28000 cache. Un cache de 35 000 ne sert à rien, car c'est plus que nécessaire pour stocker chaque nœud.

Vous devriez

  • utiliser PBF, pas de XML compressé

    Compte tenu de votre problème précédent, téléchargez également le fichier md5 et effectuez la somme de contrôle du fichier avec md5sum -c, par ex.md5sum -c planet-latest.osm.pbf.md5. Cela garantira qu'il n'y a pas eu de téléchargement ou d'enregistrement de corruption sur le disque

  • utiliser le mode mince

    Comme l'indique la page liée précédente, dans non-slim, il existe également un cache moyen qui utilise à peu près autant de RAM que le cache de nœuds, vous ne pouvez donc pas effectuer une importation non-slim de la planète avec 48 Go de RAM.

  • décider d'une stratégie de mise à jour

    À un moment donné, vous voudrez mettre à jour votre base de données. Si vous prévoyez de le faire rarement, vous allez probablement simplement supprimer la base de données et recharger les dernières données. S'il s'agit de votre plan, ajoutez le--tomberflag à votre ligne de commande et les tables minces ne seront pas indexées et supprimées à la place, économisant plus de 100 Go et des heures de temps. Si vous utilisez drop, vous pouvez également supprimer le fichier de nœuds plats.

    Si vous prévoyez de mettre à jour à l'aide de différences par minute, par heure ou par jour, vous ne pouvez pas utiliser--tomber.

  • Spécifiez le nombre de cœurs de processeur à utiliser, avec--nombre-processus.

    Cela aidera la section "voies en attente" de l'importation. Les versions récentes (0.88.x) d'osm2pgsql utilisent par défaut le nombre de threads matériels, mais les versions plus anciennes sont par défaut 1.

Vous avez mentionné l'utilisation d'une machine virtuelle. De nombreuses machines virtuelles ont des disques extrêmement lents lorsqu'elles effectuent des E/S aléatoires, ce qui peut limiter votre vitesse.


Voir la vidéo: Myrskybongareiden kevätkoulutus: Stabiilisuusindeksit (Octobre 2021).