0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks 上で Hadoop Catalog により Apache Iceberg を実行する際の Multiple sources found for ICEBERG

Last updated at Posted at 2025-02-25

概要

Databricks 上で Hadoop Catalog により Apache Iceberg を実行する際に発生した下記エラーの対応方法を紹介します。推測でありますが、 Databricks Runtime 13.3 以降で Apache Iceberg 関連の機能実装が原因の可能性があります。 Databricks Runtime 12.2 にすることでエラーの解消ができました。

AnalysisException: Multiple sources found for ICEBERG (com.databricks.sql.transaction.tahoe.uniform.sources.IcebergBrowseOnlyDataSource, org.apache.iceberg.spark.source.IcebergSource), please specify the fully qualified class name.

image.png

Databricks 上で Hadoop Catalog により Apache Iceberg を利用するには、下記の設定が必要です。

  • Databricks Runtime のバージョンを 12.2LTS 以前にすること
  • アクセスモードを分離なし共有(Uniyt Catalog 利用不可のモード」)にすること
  • Java 8 に対応したライブラリ(Iceberg 1.6.1 以前のライブラリ)を利用すること
  • Spark 構成に Iceberg 関連の設定を実施

事前準備

ベースとなるクラスターを作成

Databricks Runtime にて12.2を選択

image.png

アクセスモードを 分離なし共有に設定

image.png

Spark 構成に Iceberg 関連の設定を実施

spark.sql.catalog.spark_catalog.warehouseにて指定してディレクトリにテーブルのデータが書きこまれる。

spark.sql.catalog.spark_catalog = org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.spark_catalog.type = hadoop
spark.sql.catalog.spark_catalog.warehouse = dbfs:/Iceberg
spark.sql.extensions = org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

image.png

Iceberg 関連ライブラリであるorg.apache.iceberg:iceberg-spark-runtime-3.3_2.13:1.6.1をインストール

クラスターのライブラリタブにて、新規インストールを選択し、ライブラリをインストールウィドウにてMaveをチェック後に、

image.png

org.apache.iceberg iceberg-spark-runtimeと入力すると下記のようにバージョンごとのライブラリを表示し、org.apache.iceberg:iceberg-spark-runtime-3.3_2.131.6.1リリースを選択後に選択を選択

image.png

org.apache.iceberg:iceberg-spark-runtime-3.3_2.13:1.6.1と入力されたことを確認後に、インストールを選択

image.png

エラーの再現方法

Databricks Runtime 13.3 に変更

image.png

Databricks Runtime の Spark バージョン合わせた Iceberg のライブラリ(org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.1)を変更

image.png

クラスターを再起動

image.png

エラーとなることを確認

%sql
CREATE TABLE ICEBERG_TBL_2(ID INT,NAME STRING) USING ICEBERG;
INSERT INTO ICEBERG_TBL_2 VALUES(1,"Shraddha");
SELECT * FROM ICEBERG_TBL_2;

AnalysisException: Multiple sources found for ICEBERG (com.databricks.sql.transaction.tahoe.uniform.sources.IcebergBrowseOnlyDataSource, org.apache.iceberg.spark.source.IcebergSource), please specify the fully qualified class name.

image.png

エラーへの対応方法

Databricks Runtime を12.2に変更

image.png

Databricks Runtime の Spark バージョン合わせた Iceberg のライブラリ(org.apache.iceberg:iceberg-spark-runtime-3.3_2.13:1.6.1)を変更

image.png

エラーとなったコードが正常終了することを確認

%sql
CREATE TABLE ICEBERG_TBL_2(ID INT,NAME STRING) USING ICEBERG;
INSERT INTO ICEBERG_TBL_2 VALUES(1,"Shraddha");
SELECT * FROM ICEBERG_TBL_2;

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?