> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Parquet形式での大量データの読み込み

> Integrate.io ETLのFileStorage sourceで2024年3月から対応したApache Parquet形式の大量データを読み込み、他のパッケージと連携するデータパイプラインの構成方法を解説します。

## はじめに

以前はXplentyでのparquet形式は書き込みのみを支援しました。しかし、2024年の3月からparquet形式の読み込みの支援し始めました。

parquet形式は大量データの扱いに特化しています。前回の記事で書き出しておいたparquet形式のデータを読み込んで他に連携するパッケージを紹介します。

## XplentyでParquet形式への書き込み

### 1. parquet形式のデータの準備

parquet形式のデータを保存するFileStorage sourceで使えるSftpサーバやオブジェクトストレージ(S3, Google Cloud Storage, Azure Blob Storage)をご用意ください。大量データをparquet形式で保存しておいてください。

### 2. parquet形式のデータの読み込み

パッケージ編集画面に入り、FileStorage sourceコンポーネントを選択してください。FileStorage sourceの詳細設定は以下の通りです：

| 項目名              | 設定値                                                              |
| ---------------- | ---------------------------------------------------------------- |
| Connector        | S3                                                               |
| Bucket           | 該当コネクターのバケット名                                                    |
| Path             | `/parquet-output/2020-citibike-tripdata.*.parquet` ※個人の設定に合わせて変更 |
| Record delimiter | `New Line`                                                       |
| Record type      | `parquet`                                                        |

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-1.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=fa1199587b9dc43f604bf82dfcdc7c6f" alt="filestorage-part04-jp image 1" width="1100" height="920" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-1.webp" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-2.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=ebfc839bc9e23818774b2ac1bdc2006c" alt="filestorage-part04-jp image 2" width="1098" height="1327" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-2.webp" />
</Frame>

### 3. 追加のフィールドを設定

Selectコンポーネントを選択して、以下のようなフィールドを追加してください。Auto-fillボタンでソースからフィールドをすべて追加しておき、最後のフィールドに行きます。

| Expression                                                                     | Alias             |
| ------------------------------------------------------------------------------ | ----------------- |
| `ToString(CurrentTime(), 'yyyy-MM-dd HH:mm:ss')`                               | imported\_at\_utc |
| `ToString(SwitchTimeZone(CurrentTime(), 'Asia/Seoul'), 'yyyy-MM-dd HH:mm:ss')` | imported\_at\_kst |
| `ToString(SwitchTimeZone(CurrentTime(), 'Asia/Tokyo'), 'yyyy-MM-dd HH:mm:ss')` | imported\_at\_jst |

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-3.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=881ca22caecd15646ada057687f327d1" alt="filestorage-part04-jp image 3" width="1099" height="1313" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-3.webp" />
</Frame>

### 4. データのJSON形式の書き出し

FileStorage destinationをパッケージに追加します。詳細設定は以下の通りです：

| 項目名                         | 設定値                                                                             |
| --------------------------- | ------------------------------------------------------------------------------- |
| Connector                   | S3                                                                              |
| Target bucket               | 該当コネクターのバケット名                                                                   |
| Target directory            | `json-output-test`                                                              |
| Destination format          | `Line Delimited JSON`                                                           |
| Destination action          | `Write all files directly and replace files in directory if they already exist` |
| Merge output to single file | `Checked`                                                                       |
| Target file names           | `Custom pattern`                                                                |
| File name prefix            | `2020-citibike-tripdata.`                                                       |

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-4.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=c0f79571ae116f7d2d9554cf8071de63" alt="filestorage-part04-jp image 4" width="1099" height="1120" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-4.webp" />
</Frame>

完成したパッケージを`Save and Validate`ボタンで保存し、クラスタで実行すると指定のファイル名で`json-output-test`ディレクトリにJSONファイルが保存されます。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-5.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=376ae6a80a878fb63a1d998fc51f03a2" alt="filestorage-part04-jp image 5" width="1390" height="541" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-5.webp" />
</Frame>

### ※ 参考 - ファイルの読み込み時にtimeoutエラーになった場合の対応

FileStorage sourceでは、データの読み込み時にtimeoutエラーになる場合があります。ParquetやExcel形式のファイルはスキーマ構造を理解するためにファイルの展開が必要になります。ファイルにあるデータが少ない場合は問題ありませんが、データが多いと展開に想定よりも時間が掛かります。

<Frame>
  <img src="https://mintcdn.com/integrateio/riZNoaOHg__NoUrC/images/japanese-knowledge-base/filestorage-part04-jp/image-6.webp?fit=max&auto=format&n=riZNoaOHg__NoUrC&q=85&s=79db1964998af9964511cf77e840e609" alt="filestorage-part04-jp image 6" width="1098" height="1327" data-path="images/japanese-knowledge-base/filestorage-part04-jp/image-6.webp" />
</Frame>

この場合の対応策としては、まずはPathにデータが少ないParquetやExcel形式のファイルを指定してFileStorage sourceやパッケージを構成し、保存、テストを一通りに完了させます。

FileStorage sourceを再び開き、`02 Source properties`にそのまま行ってPathを本番用のデータが多いファイル名に設定してからそのまま`Save`ボタンをクリックして保存します。

注意点は、`03 Select input fields`には行かないことです。誤っていった場合はそのまま`Cancel`ボタンで保存せずに設定画面から出て、再びFileStorage sourceを開き、`02 Source properties`で**Path**のファイル名を変更してください。

## 終わりに

Parquet形式は大量データを迅速に扱い、かつ保存領域の節約に非常に役立ちます。AWSのAthenaでも当ファイル形式を支援しているので様々な大量のデータをparquet形式で転送して分析業務に迅速に対応が可能です。

弊社integrate.ioは、無料で２週間のトライアルを提供しております。ぜひ、お試し頂ければ幸いです。
