LoginSignup
0
1

More than 3 years have passed since last update.

parquet-toolsのビルドとParquetファイルのマージ方法

Last updated at Posted at 2020-05-07

複数のParquetファイルを1つのParquetファイルにマージする方法についてメモ

結論

parquet-toolsを使用すれば簡単にマージできます。
しかしjarとして配布されているものにはhadoop-clientが含まれていないらしく、ローカルでの実行ができませんでした。

# java -jar parquet-tools-1.9.0.jar cat test.parquet
org/apache/hadoop/fs/Path

そのため自前でビルドする必要があります。
以下のサイトを参考にビルドしました。
https://www.lancork.net/2016/10/inspect-parquet-files-using-parquet-tools/

準備

CentOS7.5 サーバ(GUI使用) でセットアップしたものを使用

1.もろもろ必要そうなパッケージをインストール

# yum install gcc gcc-c++ java-1.8.0-openjdk-devel boost-devel openssl-devel 

2.mavenのインストール

# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
# tar zxvf apache-maven-3.3.9-bin.tar.gz

3.Thriftのインストール

# wget -nv http://archive.apache.org/dist/thrift/0.12.0/thrift-0.12.0.tar.gz
# tar zxvf thrift-0.12.0.tar.gz
# cd thrift-0.12.0/
# ./configure -disable-gen-erl -disable-gen-hs -without-ruby -without-haskell -without-erlang -without-php -without-nodejs
# make install

4.ソースコード一式をダウンロード
https://github.com/apache/parquet-mr
上記リンクからソースコード一式をダウンロードする。
※gitコマンドを使わなくても Clone or download からダウンロードできる

# unzip parquet-mr-master.zip
# cd parquet-mr-master/

5.ビルドする
mvnコマンドは[カレントディレクトリ]/parquet-mr-master/ 配下で実行する
↑に気が付かず[カレントディレクトリ]/parquet-mr-master/parquet-tools 配下で実行しており、地味にハマりました。

mvn clean package -Plocal

parquet-toolsでParquetファイルをマージする

[カレントディレクトリ]/parquet-mr-master/parquet-tools/target 配下に
parquet-tools-1.12.0-SNAPSHOT.jar というファイル(2020/5/8 時点)が生成される。
こちらを用いてマージを行う。

マージするParquetファイルは何でも良かったので、ググって出てきた以下のリンクのファイルを利用させて頂きました。
http://anson.ucdavis.edu/~clarkf/

中身が見れるか確認
# java -jar ./parquet-tools-1.12.0-SNAPSHOT.jar cat test.parquet
timeperiod = 01/01/2016 00:00:05
flow1 = 0
occupancy1 = 0.0
speed1 = 0.0
flow2 = 0
occupancy2 = 0.0
speed2 = 0.0
flow3 = 0
occupancy3 = 0.0
speed3 = 0.0

timeperiod = 01/01/2016 00:00:35
flow1 = 0
occupancy1 = 0.0
speed1 = 0.0
flow2 = 0
occupancy2 = 0.0
speed2 = 0.0
flow3 = 0
occupancy3 = 0.0
speed3 = 0.0

・・・(省略)・・・
マージする
# java -jar ./parquet-tools-1.12.0-SNAPSHOT.jar merge ./data/*.parquet ./merge.parquet
Warning: file data/part-r-00000-ddaee723-f3f6-4f25-a34b-3312172aa6d7.snappy.parquet is too small, length: 16979
Warning: file data/part-r-00001-ddaee723-f3f6-4f25-a34b-3312172aa6d7.snappy.parquet is too small, length: 18350
・・・(省略)・・・
Warning: you merged too small files. Although the size of the merged file is bigger, it STILL contains small row groups, thus you don't have the advantage of big row groups, which usually leads to bad query performance!

マージしたらパフォーマンス下がるぞ的な警告が出ますが、マージできました。

以上です。

0
1
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
1