Help us understand the problem. What is going on with this article?

OSMのpbfをparquetに変換する

目的

OSMの全球データをSparkあたりで処理したいな、のための前処理です。
Apache Parquetというデータ形式に、Open Street MapのPBF形式から変換します。

osm-parquetizerを使う

世の中にはだいたい同じようなことを考えてはるか先に進んでいる先人がいるものです。
OSMのPBFをSparkで処理できないか調査していたら、adrianulbona/osm-parquetizerというリポジトリを見つけました。まさに、PBF形式を、Apache Parquetというカラム志向のデータ形式に変換するものです。
今回は、これを使ってみましょう。

環境はUbuntu19.10を手元のVMに用意しました。
aptで必要なものを入れます。

apt install default-jdk git maven

そして、Githubからリポジトリをクローンします。

git clone git@github.com:adrianulbona/osm-parquetizer.git

ビルドします。

cd osm-parquetizer/
mvn clean package

試しに、東京だけを切り出したPBFファイルで試してみます。

java -Xmx768M -jar target/osm-parquetizer-1.0.1-SNAPSHOT.jar ../../Tokyo.osm.pbf
suguru@thermosphere:~/repo/osm-parquetizer$ ls -lh ~
total 136M
drwxrwxr-x 3 suguru suguru 4.0K Nov 28 17:51 repo
-rw-rw-r-- 1 suguru suguru  30M Nov 22 19:26 Tokyo.osm.pbf
-rw-r--r-- 1 suguru suguru  78M Dec  4 17:03 Tokyo.osm.pbf.node.parquet
-rw-r--r-- 1 suguru suguru 493K Dec  4 17:03 Tokyo.osm.pbf.relation.parquet
-rw-r--r-- 1 suguru suguru  29M Dec  4 17:03 Tokyo.osm.pbf.way.parquet

変換されています。
実際にやってみたところ、Java実行時の最大ヒープ量を設定する-Xmxで768MByteを指定しないと、OutOfMemoryで完了しませんでした。
思った以上にメモリを食いそうなので、全球データが実行できるか不安です。

今後

ParquetをSparkで処理するのをやってみる。

klab
モバイルオンラインゲーム、その他スマートフォン関連サービス、及びサーバーインフラ開発・運用
http://www.klab.com/jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away