AWS Spectrumを使ってAmazon S3にデータレイクを構築し、Redshiftクラスタからデータをクエリすることは一般的なことです。しかし、パフォーマンスを上げるとなると、役立つコツがいくつかあります。その1つがParquet形式のデータを使用することです。

ここでは、データレイクのパフォーマンスを最高にするために、Integrate.ioでParquet形式を使用する方法を紹介します。

Table of Contents

  1. Parquetとは?
  2. なぜデータレイクにParquetを使うのか?
  3. Parquetのもつ課題
  4. Integrate.ioでParquetを使用する
  5. Integrate.ioでデータ処理を効率化

 

Parquetとは?

Apache Parquetはオープンソースのファイルフォーマットです。Impala、AWS Athena、Presto、その他数え切れないほどのデータウェアハウス(DWH)ソリューションでよく使われているカラム型ストレージフォーマットです。CSVやTSVなどの行ベースのファイルと比較して、Parquetのフラットなカラム型ストレージフォーマットは効率的で高パフォーマンスです。  

レコードのシュレッダーとアセンブリのための優れたアルゴリズムにより、Parquetは単にネストの名前空間をフラットにするだけの他の方法よりも優れています。それどころか、Parquetは複雑なデータセットに対して最適に動作し、大規模かつアットスケールで動作します。Parquetには,大量のデータやエンコーディングタイプを効率的に圧縮するための様々なオプションが用意されています. 

Parquetは、大規模なテーブル内の特定の列の情報を必要とするクエリを使用する場合には、多くの場合で最適なオプションとなります。必要なカラムのみを読み込むことで、Parquet形式はレイテンシと計算使用量を大幅に削減します。

なぜデータレイクにParquetを使うのか?

Apache Parquet のようなカラム形式でデータを保存することには数え切れないほどのメリットがあります。Parquet は効率的にアクセスできるように設計されており、CSV のような行ベースのファイルよりもはるかに優れた性能を発揮します。その他の利点としては、以下のようなものがあります。

  • カラム形式のストレージでは、クエリは無関係なデータを素早くスキップすることができます。これにより、行ベースのデータストアで同じクエリを実行する場合と比較して、集約クエリのリソースと時間が大幅に削減されます。これは、レイテンシの減少とハードウェアの節約に直結します。
  • Parquetは、高度なネストされたデータ構造を完全にサポートしています。デフォルトでは、Parquetは一度に大量の情報を処理するクエリのために情報を最適化する方法でデータファイルを配置します(各ファイルがギガバイトになるように)。 
  • パフォーマンスをさらに向上させるために、Parquetは柔軟な圧縮と、様々な高効率のエンコーディングスキームを用意しています。Parquet形式のすべてのカラムのデータ型は似ているので、すべてのカラムを圧縮することは簡単で、クエリの実行をさらに高速化します。データを圧縮するためにいくつかのコーデックから選択することができ、それぞれのファイルを異なる方法で圧縮することができます。 

ご覧のように、Parquetを使用することには数え切れないほどの利点があります。しかし、うまくいかない場合もあります。

 

Parquetのもつ課題

Parqueは完璧ではありません。シナリオによっては、理想的ではない場合もあります。Parquetの欠点を理解することは、データレイクに適したフォーマットを選択する際に重要です。ここでは、Parquet の課題となる可能性のあるいくつかの側面を紹介します。

  • Parquetはdatetimeや複雑なデータ型をサポートしていません。
  • Parquetが理想的なのは、Amazon Redshift SpectrumやGoogle BigQueryのようなインタラクティブでサーバーレスなソリューションのみです。 
  • カラムベースの設計では、スキーマとデータ型を考慮する必要があります。
  • ApacheのアナリティクスエンジンであるSpark以外のビルトインサポートツールが必ず見つかるとは限りません。
  • Parquetファイルは不変なので、Parquetはデータの変更はサポートしていません。
  • Parquetはスキームの進化をサポートしていません。Sparkを使用している場合は、時間はかかりますがスキーマをマージすることができます。

これらの欠点にもかかわらず、Parquetはまだ多くの状況のための優れたオプションです。幸いなことに、Integrate.ioでParguetを扱うのは非常に簡単です。

Integrate.ioでParquetを使用する

Integrate.ioでは、すべてが簡単であるべきだと考えています。特にETL出力のファイルフォーマットの定義と管理に関しては。Integrate.ioでは、ストレージ先にParquetの使用を選択すると、いくつかの簡単なパラメータを定義するだけで済みます。

ファイルストレージに保存する際のParquet指定

Integrate.ioを使用する場合、Destination Propertiesメニュー内のパラメータを設定することでParquetを使用することができます。以下のシステム変数を使用してParquet形式での出力を実現することができます。

_PARQUET_COMPRESSION: 圧縮タイプを制御することができ、利用可能な値はUNCOMPRESSED、GZIP、SNAPPYです。

_PARQUET_PAGE_SIZE:  Apache Parquet 圧縮のページサイズを定義します。

_PARQUET_BLOCK_SIZE: Parquet がメモリにバッファリングしている行グループのサイズを定義します。

ファイルストレージの保存先を定義するための追加の手順は、Integrate.ioの詳細なガイドに記載されています。

トラブルシューティング

AWS Spectrumを利用してS3にデータレイクを構築する際には、セットアップ手順に従ってコンポーネントを接続していきます。以下の追加ガイドが参考になるかもしれません。

また、サポートが必要な場合は、Integrate.ioのサポートチームに問い合わせることもできます。

Integrate.ioでデータ処理を効率化

 

Integrate.ioは、プログラミングの知識を最小限に抑えて、チームを完全にコントロールできるように、簡素化されたグラフィカルなユーザーインターフェースを通して、パワフルなETLをシンプルにします。さらに、私たちのコラボレーションツールを使えば、複数の人がデータフローの設計に参加することができます。

準備はできましたか?Integrate.ioは、あらゆるステップでデータ処理の効率を改善するお手伝いをします。 オンラインデモを予約いただき、Integrate.ioプラットフォームの14日間のリスクフリートライアルを開始してください。