LoginSignup
0
0

More than 3 years have passed since last update.

OSMのpbfをparquetに変換する

Last updated at Posted at 2019-12-04

目的

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で処理するのをやってみる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0