背景
Pythonの pandas
や DataFrame.to_parquet
が優秀すぎて「parquetファイルを扱うならPython」という風潮ですが、
https://pandas.pydata.org/pandas-docs/version/0.22.0/generated/pandas.DataFrame.to_parquet.html#pandas.DataFrame.to_parquet
Rubyでも簡単につくれることが判明したので、共有しておきます。
やり方
apacheの公式gemを使えばいける。
(≠red-arrowなので注意)
https://github.com/apache/arrow/tree/master/ruby/red-parquet
検証
ファイル作成
gemインストール
$ gem install red-parquet
テストファイル作成(csv)
$ echo colA,colB > test.csv
$ echo 1,2 >> test.csv
ruby上で変換処理(csv->parquet)
※save時に拡張子を変えるだけ
$ irb
irb(main):001:0> require "parquet"
=> true
irb(main):002:0> table = Arrow::Table.load("./test.csv")
=> #<Arrow::Table:0x7fbb0d3e6708 ptr=0x7fbb0e0a4010>
colA colB
0 1 2
irb(main):003:0> table.save("./test.parquet")
=> true
確認
test.parquetをS3にあげて、S3 Selectで確認
できた!!(型推論もしてくれてる...!)
備考
このあたりを読んでると、案外Rubyでもファイル操作ができそう。
https://www.slideshare.net/kou/datasciencerb