/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2023/03/02 読んだ記事まとめ(Snowpark, Iceberg with EMR)

Building Data Engineering Pipelines with Snowpark for Python

medium.com

Snowpark で実現するデータパイプライン処理に関するチュートリアルが公開されており、そのチュートリアルに関する概説です。

去年 SnowPro Core の試験を受けた時には全く出題されませんでしたが、Snowpark は Python, Java, Scala などのプログラミング言語を通じて Snowflake と連携ができる機能や、そのクライアントライブラリを指すようです。DataFrame に対するプログラムが、ライブラリ内にて Snowflake のクエリへ変換されて実行されます。さらにはタスクの定義も可能で、定期実行やパイプライン構築もチュートリアルからは読み取れます。

GitHub Actions との連携も説明されているので、GitHub に連携するだけで Snowflake のパイプライン処理が構築できるため、環境設定がとても簡単そうです。

Snowpark の解説は、こちらのクラスメソッドさんの動画も分かりやすかったです(4分32秒〜):

www.youtube.com

Apache Iceberg Reduced Our Amazon S3 Cost by 90%

medium.com

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 で読み込むことが可能です。

www.snowflake.com