概要
Databricks Runtime 14.3上で Apache iceberg 形式のデータからデータフレームを作成する際の下記エラーへの対応方法を共有します。下記エラーは Databricks 仕様により発生するため、Databricks Runtime 16.0 以降のクラスターで実行すれば動作するようです。対応方法を共有します。
UnsupportedOperationException: Byte-buffer read unsupported by com.databricks.common.filesystem.LokiAbfsInputStream
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3) (10.139.64.13 executor driver): java.lang.UnsupportedOperationException: Byte-buffer read unsupported by com.databricks.common.filesystem.LokiAbfsInputStream
対応方法については、 Apache Iceberg の下記の Issue にて言及されておりました。
事前準備
下記記事の事前準備と同様の手順を実施してください。
エラーの再現方法
df = spark.read.format("org.apache.iceberg.spark.source.IcebergSource").load(table_dir)
df.printSchema()
df.display()
対応方法
1. Databricks Runtime 16.0 以降のクラスターを作成
Databricks Runtime 16.X のクラスターを、アクセスモードを分離なし共有
に、 Spark 3.5 の Apache Iceberg 関連のライブラリをインストールに、それぞれ設定して作成します。
2. コードが正常に動作することを確認
df = spark.read.format("org.apache.iceberg.spark.source.IcebergSource").load(table_dir)
df.printSchema()
df.display()