Apache Parquetとは

橋の梁の下から撮影された写真

共同執筆者

Annie Badman

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Apache Parquetとは

Apache Parquetは、大規模なデータセットを効率的に保管、管理、分析するために使用されるオープンソースの列指向ストレージ形式です。CSVやJSONのような行ベースのストレージ形式とは異なり、Parquetはデータを列単位で整理することで、クエリーの性能を向上させ、データ・ストレージのコストを削減します。

組織は、さまざまなデータの要件を満たすために、異なるファイル形式を使用します。多くの従来の形式ではデータを行単位で整理し、シンプルなデータ転送と可読性の向上を最適化しています。

Parquetは、根本的に異なるアプローチを採用しています。同じ種類のデータを列ごとにグループ化することで、この列指向の構造は組織における大規模分析の処理方法を一新し、高度な圧縮やデータへの効率的なアクセスを可能にしました。

例えば、顧客トランザクションを分析する際、Parquetを使用する小売データベースでは、顧客の全レコードを読み込むことなく、購入日や購入金額といった特定の列にアクセスできます。このように特定の列にアクセスできることで、処理時間の短縮とストレージ・コストの削減が可能になります。

Parquet形式は、次の3つの主要な領域で価値を発揮します。

  • 数十億件のレコードに対して複雑なクエリーを処理する分析ワークロード。
  • 効率的なストレージと高速なデータ取得を必要とするデータレイクおよびデータウェアハウス。
  • 大規模なトレーニング・データセットに対して特定の属性を分析する機械学習(ML)パイプライン。

Parquetが広く採用されているもう1つの理由は、Apache Spark、Apache Hive、Apache Hadoopなどの分散システムやデータ・ツールと互換性があることです。

Apache Parquetの主な特長

他のファイル形式と比較して、Parquetは次の3つの主要な機能によってデータ・ストレージとアクセス方法を変革します。

  • 列指向ストレージ形式:従来のファイル形式はスプレッドシートのエントリーのようにデータを行単位で保管しますが、Parquetは列指向ストレージ形式を採用しています。これにより、類似したデータ型を列ごとに整理し、Parquetは必要な列の値のみを読み取ることが可能になります。このターゲット型のアプローチにより、クエリー時間を数時間から数分に短縮し、ストレージ・コストを大幅に削減できます。
  • スキーマとメタデータ管理:Parquetファイルには、それぞれ自己記述型スキーマが含まれており、これはデータ構造の青写真のような役割を果たします。このメタデータにより、効率的なクエリーが可能になり、ビジネスの要件が変化してもデータ・モデルを柔軟に進化させることができます。例えば、Parquetを使用する企業のデータベースでは、既存のレコードを再構築することなく、新しい顧客属性を追加できます。
  • 効率的な圧縮:Parquetは高度な圧縮技術を使用してデータ・ストレージを自動的に最適化します。これは、不要な重複情報を削除し、よりスペース効率の高い形式でデータを保管することで、ファイル・サイズを小さくすることを意味します。このインテリジェントなデータ・ストレージのアプローチにより、さまざまなワークロードにおいて最適なストレージ効率と計算性能を確保できます。
ニュースレターを表示しているスマホの画面

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

Apache Parquetの仕組み

Apache Parquetは、未加工データを体系的に最適化された列指向形式に変換し、ストレージ効率とクエリー性能の両方を大幅に向上させます。

Parquetがデータを処理する方法は次のとおりです。

1. データの組織

Parquetファイルにデータを書き込む際、まずデータを行グループに分割します。各行グループはデータセットの独立した単位として機能し、大規模なオペレーションにおいて並列処理と効率的なメモリー管理を可能にします。このパーティショニング・ストラテジーが、Parquetの高性能なデータ・アクセスの基盤となっています。

2. 列チャンク化

各行グループ内で、Parquetのアセンブリ・アルゴリズムはデータを行ではなく列単位で再編成します。類似したデータ型は列チャンクとしてグループ化され、データの特性に応じた専用のエンコーディングが適用されます。例えば、日付の列は数値の列とは異なる最適化が行われます。

3. 圧縮およびエンコード

Parquetは2段階の最適化プロセスを適用します。まず、ランレングス・エンコーディング(RLE)などのエンコーディング手法を使用して、繰り返しのある値を効率的に表現します。これは、重複エントリーの多い列に特に有効です。次に、SnappyやGzipなどの圧縮アルゴリズムを適用し、ストレージの必要容量をさらに削減します。

4. メタデータの生成

この形式では、ファイルのスキーマやデータ型、各列の統計情報、行グループの位置や構造などを含む包括的なメタデータを作成します。このメタデータにより、効率的なクエリー計画と最適化が可能になります。

5. クエリーの実行

Parquetデータを読み取る際、クエリー・エンジンはまずメタデータを参照し、必要な列を特定します。ストレージからは必要な列チャンクのみが読み込まれ、データは必要に応じて解凍およびデコードされます。

Apache Parquetのメリット

Apache Parquetは、大規模なデータ・オペレーションを管理する組織に対して、重要な利点をもたらします。

その主なメリットは次のとおりです。

クエリーの性能

Parquetのデータ構造により、分析クエリーの実行が大幅に高速化されます。アプリケーションが特定のデータを必要とする場合、関連する列のみを読み取るため、クエリー時間を数時間から数分に短縮できます。このターゲット型のアクセスにより、大規模な複雑な分析を実行する組織にとってParquetは非常に有用なものとなります。

複雑なデータ処理

シンプルな形式とは異なり、Parquetはネストされたデータ構造や、現代のアプリケーションで一般的な配列を効率的に管理できます。この機能により、複雑なデータ型を扱う組織にとって有用となります。例えば、Web解析におけるJSONライクな構造や、IoT(モノのインターネット)デバイスのセンサー・データに含まれるネストされた配列などが挙げられます。

ストレージ効率

Parquetの列指向形式は、データの保管方法と圧縮方法を根本的に変えます。類似したデータ型をグループ化することで、Parquetはデータの種類ごとに異なるエンコーディング・アルゴリズムを適用でき、CSVやJSONなどの形式よりも優れた圧縮率を実現します。

例えば、数百万件の顧客トランザクションを含むデータセットは、CSV形式で保存するとテラバイト単位のストレージ容量が必要になる場合がありますが、Parquetファイルとして保管すれば、その容量を大幅に削減できます。

フレームワーク統合

最新のデータ・アーキテクチャーでは、多くの場合、ツール間のシームレスな統合が求められますが、Parquetは主要なフレームワークをネイティブでサポートすることにより、このニーズを満たします。分析にPythonとpandasを使うチームでも、アプリケーション開発にJavaを使うチームでも、あるいはデータ処理にApache Sparkを使うチームでも、Parquetを利用することで、企業全体で一貫したデータ・アクセスを確保することが可能になります。

Hadoopエコシステムの最適化

ParquetはHadoopとネイティブで統合されているため、特にビッグデータ処理に効果を発揮します。ParquetはもともとHadoop分散ファイル・システム(HDFS)向けに設計されているため、一般的にHadoop環境では従来のファイル形式よりも優れたパフォーマンスを発揮します。ParquetをHadoopと組み合わせて使用することで、組織はクエリーをより高速に実行し、データをより効率的に保管できるようになります。多くの場合、従来必要としていたストレージ容量のほんの一部で済みます。

IBM Storage FlashSystem

IBM Storage FlashSystem:VMwareのコスト、シンプルさ、レジリエンスを最適化

IBM FlashSystemがVMware環境を最適化して、コスト効率、シンプルさ、レジリエンスを実現する方法をご覧ください。このセッションでは、IBM FlashSystemがデータの安全性、アクセシビリティ、性能を強化し、最新のITインフラストラクチャーにとって理想的なソリューションにする方法に焦点を当てます。

一般的なParquetのユースケース

Apache Parquetは、さまざまな業種・業務やアプリケーションにおける幅広いデータ・エンジニアリングのニーズに対応できます。

特に大きな効果を発揮する実装例として、次のようなものがあります。

データレイクとデータウェアハウス

データレイクデータウェアハウスを構築する組織は、多くの場合、Parquetを主要なストレージ形式として採用しています。Parquetの優れた圧縮効率とクエリー性能により、大量のデータを効率よく保管できるだけでなく、Business Intelligenceツールや構造化クエリー言語(SQL)によるクエリーの迅速なデータ・アクセスにも最適です。

例えば、トランザクション・データの保管にParquetを使用する小売チェーンでは、従来の形式よりも少ないストレージ容量で、数千店舗における販売パターンの分析を行うことができます。

分析ワークロード

Apache SparkやPythonのpandasライブラリーなどのフレームワークを利用するデータサイエンティストやアナリストは、Parquetが分析クエリー向けに最適化された性能を提供するメリットを得られます。Avroなどの形式はレコード単位の処理に優れていることが多い一方で、複雑な分析にはParquetファイル形式が特に効果的だと感じる人が多くいます。

例えば、金融サービス企業が市場データの保管にParquetを使用すると、アナリストは数百万件の取引イベントを処理し、リスク・メトリクスをほぼリアルタイムで算出できるようになります。

ETLパイプライン

最新のデータ・パイプラインでは、抽出、変換、ロード(ETL)プロセスの中間形式またはターゲット形式として、Parquetが頻繁に利用されています。ParquetはApache Sparkなどの一般的なフレームワークと互換性があり、スキーマの進化にも対応しているため、変化するデータ構造を扱う必要があるデータ・エンジニアリングのワークフローにおいて高い価値を持ちます。

例えば、医療機関ではParquetを使用することで、複数のシステムからの患者レコードを統一形式へ効率的に変換できます。また、スキーマの進化機能によって、新しいデータ・フィールドが追加されても既存のプロセスを中断することなく、自動的に対応できます。

Apache Parquetと他のファイル形式の比較

Parquetファイル形式とその他の一般的なストレージ形式との比較は次のとおりです。

ParquetとCSVおよびJSONの比較

CSVやJSONのような従来型の形式は、データを行単位で保管するため、シンプルなデータ転送や人間が読みやすいという点では理想的です。しかし、大規模な分析を行う場合、Parquetファイルの読み込みには大きなメリットがあります。

CSVでは1つの列をクエリーする場合でも各行全体をスキャンする必要がありますが、Parquetの列指向ストレージでは特定のデータ要素に直接アクセスできます。例えば、ペタバイト規模のデータセットで単一の列を分析する場合、CSVファイルは全体を読み取る必要があるのに対し、Parquetであれば関連する列のチャンクだけにアクセスすれば済みます。

ParquetとAvroの比較

AvroとParquetは、データ・エコシステムにおいて異なるユースケースを満たします。Avroの行ベースの形式はシリアライズやストリーミングのシナリオに優れており、個々のイベントやトランザクションの記録に最適です。

それに対してParquetファイル形式は、数百万件のレコードにわたる特定の列を組織が分析する必要があるような、分析ワークロード向けに最適化されています。

例えば、Eコマースのプラットフォームでは、リアルタイムの注文イベントを記録する際にAvroを使用し、長期的なストレージや分析のためにParquetへ変換することがあります。

ツールおよびフレームワークのサポート・エコシステム

Apache Parquetの強みは、その形式仕様だけでなく、それを支えるツールやフレームワークの強力なエコシステムにもあります。

Parquetのエコシステムにおける特に重要なテクノロジーには、次のようなものがあります。

処理フレームワーク

Parquetは主要なデータ処理フレームワークとシームレスに統合できます。Apache Sparkは高性能な分析機能を提供し、Hadoopは大規模なクラスター全体で分散処理を可能にします。

Apache Arrowは、システム間の高速かつ効率的なデータ共有や直接的なデータ・アクセスを可能にすることで、この処理エコシステムをさらに強化します。これらの主要な機能により、SparkやHadoopなどのフレームワークを使用する際の性能を向上させることができます。

組織はこれらのフレームワークとParquetを組み合わせることで、ギガバイト規模からペタバイト規模に及ぶ効率的なデータ・パイプラインを構築できます。

プログラミング言語とインターフェース

データ・エンジニアは、複数のプログラミング・インターフェースを通じてParquetを扱うことができます。Python開発者は通常、データ操作にpandasを使用し、JavaアプリケーションはネイティブのParquetライブラリーを使用します。

クラウドプラットフォーム

Amazon Web Services、Googleクラウド・プラットフォーム、Microsoft Azure、IBM® Cloudをはじめとする主要なクラウド・プロバイダーは、Parquetをネイティブでサポートしています。

Parquetは、Amazon Athena、Google BigQuery、IBM® Db2 Warehouseなど、クラウドベースのデータウェアハウスやクエリー・エンジンとも互換性があります。

関連ソリューション
IBM Storage DS8000

IBM Storage DS8000は、IBM zSystemsおよびIBM Powerサーバー用の、最も高速で信頼性が高くセキュアなストレージ・システムです。

Storage DS8000の詳細はこちら
エンタープライズ・データ・ストレージ・ソリューション

IBM Storageは、データ・ストレージ・ハードウェア、ソフトウェア定義ストレージ、およびストレージ管理ソフトウェアの製品群です。

データ・ストレージ・ソリューションの詳細はこちら
ハードウェアおよびソフトウェアのサポート・サービス

IBMは、Webサーバーやデータセンター・インフラストラクチャーに対する事前対応型のサポートを提供しており、ダウンタイムの削減と、ITの可用性の向上を支援します。

Webサーバー・サービス
次のステップ

IBMのストレージ・ソリューションは、ハイブリッドクラウド環境の管理からデータ・レジリエンスの確保まで、脅威に対する強力な保護を維持しつつ、データから洞察を引き出すことができます。

データ・ストレージ・ソリューションの詳細はこちら 製品ツアーはこちら