組織は、さまざまなデータの要件を満たすために、異なるファイル形式を使用します。多くの従来の形式ではデータを行単位で整理し、シンプルなデータ転送と可読性の向上を最適化しています。
Parquetは、根本的に異なるアプローチを採用しています。同じ種類のデータを列ごとにグループ化することで、この列指向の構造は組織における大規模分析の処理方法を一新し、高度な圧縮やデータへの効率的なアクセスを可能にしました。
例えば、顧客トランザクションを分析する際、Parquetを使用する小売データベースでは、顧客の全レコードを読み込むことなく、購入日や購入金額といった特定の列にアクセスできます。このように特定の列にアクセスできることで、処理時間の短縮とストレージ・コストの削減が可能になります。
Parquet形式は、次の3つの主要な領域で価値を発揮します。
Parquetが広く採用されているもう1つの理由は、Apache Spark、Apache Hive、Apache Hadoopなどの分散システムやデータ・ツールと互換性があることです。
他のファイル形式と比較して、Parquetは次の3つの主要な機能によってデータ・ストレージとアクセス方法を変革します。
Apache Parquetは、未加工データを体系的に最適化された列指向形式に変換し、ストレージ効率とクエリー性能の両方を大幅に向上させます。
Parquetがデータを処理する方法は次のとおりです。
Parquetファイルにデータを書き込む際、まずデータを行グループに分割します。各行グループはデータセットの独立した単位として機能し、大規模なオペレーションにおいて並列処理と効率的なメモリー管理を可能にします。このパーティショニング・ストラテジーが、Parquetの高性能なデータ・アクセスの基盤となっています。
各行グループ内で、Parquetのアセンブリ・アルゴリズムはデータを行ではなく列単位で再編成します。類似したデータ型は列チャンクとしてグループ化され、データの特性に応じた専用のエンコーディングが適用されます。例えば、日付の列は数値の列とは異なる最適化が行われます。
Parquetは2段階の最適化プロセスを適用します。まず、ランレングス・エンコーディング(RLE)などのエンコーディング手法を使用して、繰り返しのある値を効率的に表現します。これは、重複エントリーの多い列に特に有効です。次に、SnappyやGzipなどの圧縮アルゴリズムを適用し、ストレージの必要容量をさらに削減します。
この形式では、ファイルのスキーマやデータ型、各列の統計情報、行グループの位置や構造などを含む包括的なメタデータを作成します。このメタデータにより、効率的なクエリー計画と最適化が可能になります。
Parquetデータを読み取る際、クエリー・エンジンはまずメタデータを参照し、必要な列を特定します。ストレージからは必要な列チャンクのみが読み込まれ、データは必要に応じて解凍およびデコードされます。
Apache Parquetは、大規模なデータ・オペレーションを管理する組織に対して、重要な利点をもたらします。
その主なメリットは次のとおりです。
Parquetのデータ構造により、分析クエリーの実行が大幅に高速化されます。アプリケーションが特定のデータを必要とする場合、関連する列のみを読み取るため、クエリー時間を数時間から数分に短縮できます。このターゲット型のアクセスにより、大規模な複雑な分析を実行する組織にとってParquetは非常に有用なものとなります。
シンプルな形式とは異なり、Parquetはネストされたデータ構造や、現代のアプリケーションで一般的な配列を効率的に管理できます。この機能により、複雑なデータ型を扱う組織にとって有用となります。例えば、Web解析におけるJSONライクな構造や、IoT(モノのインターネット)デバイスのセンサー・データに含まれるネストされた配列などが挙げられます。
Parquetの列指向形式は、データの保管方法と圧縮方法を根本的に変えます。類似したデータ型をグループ化することで、Parquetはデータの種類ごとに異なるエンコーディング・アルゴリズムを適用でき、CSVやJSONなどの形式よりも優れた圧縮率を実現します。
例えば、数百万件の顧客トランザクションを含むデータセットは、CSV形式で保存するとテラバイト単位のストレージ容量が必要になる場合がありますが、Parquetファイルとして保管すれば、その容量を大幅に削減できます。
最新のデータ・アーキテクチャーでは、多くの場合、ツール間のシームレスな統合が求められますが、Parquetは主要なフレームワークをネイティブでサポートすることにより、このニーズを満たします。分析にPythonとpandasを使うチームでも、アプリケーション開発にJavaを使うチームでも、あるいはデータ処理にApache Sparkを使うチームでも、Parquetを利用することで、企業全体で一貫したデータ・アクセスを確保することが可能になります。
ParquetはHadoopとネイティブで統合されているため、特にビッグデータ処理に効果を発揮します。ParquetはもともとHadoop分散ファイル・システム(HDFS)向けに設計されているため、一般的にHadoop環境では従来のファイル形式よりも優れたパフォーマンスを発揮します。ParquetをHadoopと組み合わせて使用することで、組織はクエリーをより高速に実行し、データをより効率的に保管できるようになります。多くの場合、従来必要としていたストレージ容量のほんの一部で済みます。
Apache Parquetは、さまざまな業種・業務やアプリケーションにおける幅広いデータ・エンジニアリングのニーズに対応できます。
特に大きな効果を発揮する実装例として、次のようなものがあります。
Apache SparkやPythonのpandasライブラリーなどのフレームワークを利用するデータサイエンティストやアナリストは、Parquetが分析クエリー向けに最適化された性能を提供するメリットを得られます。Avroなどの形式はレコード単位の処理に優れていることが多い一方で、複雑な分析にはParquetファイル形式が特に効果的だと感じる人が多くいます。
例えば、金融サービス企業が市場データの保管にParquetを使用すると、アナリストは数百万件の取引イベントを処理し、リスク・メトリクスをほぼリアルタイムで算出できるようになります。
最新のデータ・パイプラインでは、抽出、変換、ロード(ETL)プロセスの中間形式またはターゲット形式として、Parquetが頻繁に利用されています。ParquetはApache Sparkなどの一般的なフレームワークと互換性があり、スキーマの進化にも対応しているため、変化するデータ構造を扱う必要があるデータ・エンジニアリングのワークフローにおいて高い価値を持ちます。
例えば、医療機関ではParquetを使用することで、複数のシステムからの患者レコードを統一形式へ効率的に変換できます。また、スキーマの進化機能によって、新しいデータ・フィールドが追加されても既存のプロセスを中断することなく、自動的に対応できます。
Parquetファイル形式とその他の一般的なストレージ形式との比較は次のとおりです。
CSVやJSONのような従来型の形式は、データを行単位で保管するため、シンプルなデータ転送や人間が読みやすいという点では理想的です。しかし、大規模な分析を行う場合、Parquetファイルの読み込みには大きなメリットがあります。
CSVでは1つの列をクエリーする場合でも各行全体をスキャンする必要がありますが、Parquetの列指向ストレージでは特定のデータ要素に直接アクセスできます。例えば、ペタバイト規模のデータセットで単一の列を分析する場合、CSVファイルは全体を読み取る必要があるのに対し、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 zSystemsおよびIBM Powerサーバー用の、最も高速で信頼性が高くセキュアなストレージ・システムです。
IBM Storageは、データ・ストレージ・ハードウェア、ソフトウェア定義ストレージ、およびストレージ管理ソフトウェアの製品群です。
IBMは、Webサーバーやデータセンター・インフラストラクチャーに対する事前対応型のサポートを提供しており、ダウンタイムの削減と、ITの可用性の向上を支援します。