グルカイ!第28回「Apache ParquetフォーマットのデータをGroongaに読み込むには?」を開催しました!
グルカイ!第28回「Apache ParquetフォーマットのデータをGroongaに読み込むには?」を開催しました!の内容をまとめました!
今回は、Apache ParquetフォーマットのデータをどうやってGroongaに読み込むのか?について解説いただきました!
Apache Parquetとは?
まず、Apache Parquetフォーマットについて解説いただきました。 列指向のフォーマットで、必要なカラムの値のみ取り出せるのでCSV等の行指向のフォーマットに比べて入力するデータを選択できる点が強みです。
Apache Parquetはストレージ用フォーマットであるため、なるべくディスク容量を小さくしたくなります。 例えば、時系列データなどは増えていく一方であり、ストレージも無料ではないのでなるべくディスク容量を抑えたくなります。
また、使用するディスク容量が少ないほうがI/Oの負荷も少ないためパフォーマンス的にも有利になります。 読み書きの速度とディスク容量はトレードオフになりやすいですが、Apache Parquetフォーマットは読み書きの速度とディスク容量のバランスをうまくとっています。
Apache Parquetフォーマットは型があるので、データ量を小さくしやすくなっています。 例えば、文字列だと8byte必要だが数字であれば4byteで表現できるなど、型があることで容量を節約できるケースがあります。
GroongaでApache Parquetフォーマットは読めるのか?
読み込めません!
ただ、Apache Arrowを使うことでGroongaに読み込めるようになります。
Apache Arrowとは列指向で型がついているデータフォーマットです。 Apache Parquetとの違いはインメモリ用のフォーマットであることです。 速く計算できることと、速くデータを交換(異なるデータフォーマットでやり取り)することを大事にしています。
GroongaはApache Arrowフォーマットのデータを読むことができます。 そのため、ストレージにあるApache ParquetのデータをApache Arrowフォーマットにしてメモリー読み込んでGroongaに渡す。ということができます。 このようすれば、Apache ParquetのデータをGroongaに読むことができます。
その他のストレージ用フォーマットApache ORC/AVROなどのフォーマットもApache Arrow形式にして扱うことができます。 したがって、Apache Arrowフォーマットをサポートすることで、様々なデータフォーマットのデータを読むことができるようになります。