Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スキーマオンライトな Apache Iceberg に、スキーマオンリード風に書く

Avatar for ryuki sawada ryuki sawada
June 11, 2026
14

スキーマオンライトな Apache Iceberg に、スキーマオンリード風に書く

Avatar for ryuki sawada

ryuki sawada

June 11, 2026

Transcript

  1. 観点 スキーマオンリード スキーマオンライト 特徴 書き込む段階ではスキーマに関係ない形で保 存し、読み込む段階でスキーマを適用 書き込む段階でスキーマを適⽤して保存、読み込む段 階でも同じスキーマを使⽤ スキーマの複雑さ 定義が分散し、複雑化しやすい

    シンプルに保ちやすい (一元管理) データ送信の手間 少ない(自由に送れる) 多い(送信データ定義ファイルとテーブル両方の更新が 必要) データの整合性 不整合にあとから気づく 書き込む段階で未然に防げる スキーマオンリード vs スキーマオンライト 3
  2. 課題: 送られてきたデータのバージョンが古く、テーブル側で追 加した新カラムが⾜りない場合、そのままではエラーにな る。 解決策 • データの深い構造まで再帰でチェック • ⾜りないカラムを lit(null)

    で埋めるように変換 • 定義に差があっても⽌まらずに書き込める ⼯夫① 再帰的な型変換と⾃動補完 case StructType(toFields) => struct(toFields.map { f => from.find(_.name == f.name) match { case Some(x) => recursive(x) case None => lit(null).cast(f.datatype) } }: _*) 5