こんにちは!日比です!
みなさんはSnowflakeのロード速度ってどれくらいか気になったことはないでしょうか?
ファイル形式やファイル数、ウェアハウスサイズなど
ロード時間にどのような影響があるのかを検証で確認しました。
本記事でわかること
- データロードの概要
- データロードに最適なファイル形式
データロードの概要
まずはSnowflakeのデータロードについて振り返りましょう。
データロードのやりかた
基本的なやり方はデータファイル(CSV形式など)を用意し
各クラウドのストレージに配置してロードを行います。
![](https://engineer-boost.com/wp-content/uploads/2023/05/zu01_load_summary2-1.jpg)
クラウド契約済の場合は、そのクラウドのストレージに配置、
特にクラウド契約がない場合は、Snowflakeが用意したストレージに配置します。
ちなみに前者をSnowflakeから外側にあるので外部ステージ、
後者をSnowflake内部にあるので内部ステージとよびます。
ロード方法やパフォーマンスに大きな差異はありませんので、
契約や利用状況に応じて、やりやすい方を選んでもらえれば結構です。
※ただし、ご契約のクラウド/リージョンと、Snowflakeのクラウド/リージョンが異なる場合
コスト面やパフォーマンス面で不利になります。同一のものが推奨されます。
サポートされているファイル形式
Snowflakeでロードするデータファイルは、様々なファイル形式がサポートされています。
・ファイル分割
ファイル分割を行う方がロードが速いです。
・圧縮の有無
ファイルを圧縮しているかどうか
・ファイル形式
CSV、JSON、XMLなど
データロード検証
検証パターン
様々なファイル形式でどれが最適なのか
また、ウェアハウスサイズの差異による影響を検証してみました。
検証パターンは下記のとおりです。
![](https://engineer-boost.com/wp-content/uploads/2023/05/zu01_kensyo_paturn-1024x306.jpg)
検証概要
検証概要は下記のとおりです。
![](https://engineer-boost.com/wp-content/uploads/2023/05/zu03_kensyo_summary-1024x315.jpg)
検証結果
検証結果は下記のとおりです。
・ウェアハウスのサイズ
ウェアハウスサイズに比例して、ロード速度も向上しました。
・圧縮有無
圧縮有無による大きな差異はみられませんでした。
・ファイルサイズ
推奨サイズの250MBまでは大きな差はありませんでした。
・ファイル数
5GBの圧縮ありはファイルが1つとなり、ロードに時間を要しました。
![](https://engineer-boost.com/wp-content/uploads/2023/05/zu04_result2.jpg)
※5GBの圧縮なしは、CSVデータ作成時に制約にひっかかったため対象外としています。
まとめ
実際にロードを行う際は、下記を検討するとよいでしょう。
・単一ファイルは避けましょう。
→可能なかぎりファイル分割を行うことを推奨します。
・時間短縮のためにウェアハウスを調整しましょう。
※まずはMサイズあたりで検証を行い、最適なサイズをみつけましょう。
・ファイルの圧縮はデータソースからの転送時間などを考慮し決定しましょう。
いかがでしたでしょうか。
本検証がみなさんの参考になれば幸いです。
コメント