【パーケット】

Parquet(パーケット) とは?

最終更新:
💡 必要な列を選んで読む、分析向けのファイル形式

分析用のデータを列ごとにまとめて格納する、オープンソースのファイル形式。必要な列の読み込みや圧縮を効率化できるが、速度や容量はデータ・設定・処理によって変わる。

📌 このページのポイント
必要な列を選んで読む CSV:行のテキスト Parquet:列のまとまり 商品 商品 数量 数量 金額 金額 A A 2 2 800 800 B B 1 1 500 500 C C 3 3 900 900 通常は行を順に読む 金額列を選ぶ例 金額を集計 800+500+900 ファイル の構造 行グループ → 列チャンク → ページ メタデータで列の場所や型を確認 統計があれば条件で読み飛ばす場合も 速さや圧縮率は、データ・設定・処理による
1つの行グループ内の配置を単純化した例。Parquetの読み手はメタデータを確認し、必要な列のデータを選べる。固定の速度倍率や圧縮率を示す図ではない。
ひよこ ひよこ
CSVと何が違うの?
ペンギン先生 ペンギン先生
CSVは行ごとのテキスト、Parquetは行グループの中を列ごとのまとまりにして保存する形式だよ。例えば売上の表から金額だけ集計するなら、対応する読み取りツールは他の列のデータを読まずに処理できる。実際には列を探すためのメタデータなども読むんだ。
ひよこ ひよこ
必要なところだけ読めるから速いんだね!
ペンギン先生 ペンギン先生
読む量を減らせるのが利点だよ。同じ型の値をまとめ、繰り返しに合った符号化や圧縮も選べる。ただし何倍速い、何分の一の容量になるという固定の効果はないので、実際のデータと処理で比べるんだ。
ひよこ ひよこ
じゃあ全部Parquetにすればいい?
ペンギン先生 ペンギン先生
大量のデータを集計する用途に合いやすいけれど、ファイル形式そのものがデータベースの更新機能を持つわけではないよ。行グループやページとして書き込む構造なので、1件ずつ追加・変更するサービスでは、データベースや上位の仕組みも含めて選ぶ必要があるんだ。
ひよこ ひよこ
どういうところで使われているの?
ペンギン先生 ペンギン先生
データレイクなどの分析で使われるよ。例えばAthenaは、Amazon S3にあるParquetをクエリする際、必要な列や条件に合うブロックを読み取れる。形式だけ選べば自動で使えるのではなく、対応ツールのテーブルやスキーマなどの設定も必要だよ。
ひよこ ひよこ
ファイルの中身はどうなっているの?
ペンギン先生 ペンギン先生
行グループ、その中の列チャンク、さらにページという構造だよ。末尾のメタデータを読んで列の場所を調べる。最小値・最大値などの統計があれば、条件に合わない範囲を読み飛ばせることもある。ただし統計の有無や活用は書き手・読み手によるんだ。
ひよこ ひよこ
型やメモリ上の形式も同じ?
ペンギン先生 ペンギン先生
ファイルにはスキーマがあるけれど、読み取りツールごとに対応する型や機能を確認する必要があるよ。Apache ArrowにもParquetを読み書きする機能がある。ただしArrowとParquetの型は一対一に対応するとは限らず、圧縮されたファイルをそのまま万能なゼロコピーで扱えるとは考えないでね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Parquet」って出てきたら「列ごとに保存し、必要な部分を効率よく読むためのデータファイル形式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Apache Parquet」 = Apacheの列指向データファイル形式
💬 Apache Parquetはプロジェクトと形式の名称。ここでは木材の床ではなく、分析用データの格納形式を指しているよ。

参考資料

← 用語集にもどる