Building Data Engineering Pipelines with Snowpark for Python
Snowpark で実現するデータパイプライン処理に関するチュートリアルが公開されており、そのチュートリアルに関する概説です。
去年 SnowPro Core の試験を受けた時には全く出題されませんでしたが、Snowpark は Python, Java, Scala などのプログラミング言語を通じて Snowflake と連携ができる機能や、そのクライアントライブラリを指すようです。DataFrame に対するプログラムが、ライブラリ内にて Snowflake のクエリへ変換されて実行されます。さらにはタスクの定義も可能で、定期実行やパイプライン構築もチュートリアルからは読み取れます。
GitHub Actions との連携も説明されているので、GitHub に連携するだけで Snowflake のパイプライン処理が構築できるため、環境設定がとても簡単そうです。
Snowpark の解説は、こちらのクラスメソッドさんの動画も分かりやすかったです(4分32秒〜):
Apache Iceberg Reduced Our Amazon S3 Cost by 90%
Iceberg を利用した Amazon EMR のコスト&パフォーマンス最適化の記事です。HDFS、ORC、Parquet というファイル形式の変遷や、Iceberg を導入する理由が説明されています。
HDFS を念頭においた Hive ではファイル数が増えるにつれて、クエリが必要とするファイルを検索するための Hive MetaStore の負荷が上昇してボトルネックになります。クラウド環境では S3 への API コールごとにコストが発生するため、Spark で発生しやすいスモールファイル問題が実行速度だけでなく、コストにも影響を及ぼします。
Iceberg は Netflix 社により開発され、のちに Apache Software Foundation に提供されたオープンソースのテーブル形式です。Iceberg はペタバイト級のテーブルも扱えるようになっており、ファイルディレクトリを走査することなく、つまりテーブルサイズに比例せず一定コスト O(1) でスキャンするべきファイルを取得することができます。さらにファイルサイズも調整できるため、スモールファイル問題も解決してS3へのAPIコールを削減することができます。
Snowflake でも外部テーブルとして Iceberg が対応されており、Iceberg のテーブルを Snowflake で読み込むことが可能です。