Azure Databricks配置Iceberg时遭遇[DATA_SOURCE_NOT_FOUND]错误的求助
Azure Databricks配置Iceberg时遭遇[DATA_SOURCE_NOT_FOUND]错误的求助
嘿,我看你在Azure Databricks个人集群上搭建Iceberg的时候碰到了数据源找不到的问题,这坑我之前也踩过,给你梳理下几个关键排查点和解决办法:
首先,版本不匹配大概率是核心问题!你用的Databricks Runtime 16.3对应的Scala版本是2.12,但你安装的Iceberg jar是iceberg-spark-runtime-3.5_2.13-1.9.0.jar——Scala 2.13的包在2.12的环境里根本没法正常加载。赶紧换成对应Scala 2.12的版本,比如iceberg-spark-runtime-3.5_2.12-1.9.0.jar;如果用Maven坐标的话,要明确指定Scala版本:org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.9.0。
然后,你的Spark初始化配置缺了关键参数,Iceberg没法正常注册成数据源:
- 必须添加
spark.sql.extensions来注册Iceberg的扩展:spark.sql.extensions = org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions - 如果用ABFSS作为仓库路径,还得配置存储账户的访问密钥,不然集群连不上你的ADLS Gen2:
spark.hadoop.fs.azure.account.key.<你的存储账户名>.dfs.core.windows.net = <你的存储密钥>
另外给你几个小细节提醒:
- 单节点集群的
spark.master设成local[*]就够了,不用额外加,4,不过这个不是导致当前错误的原因 - 你写表用的是
catalogname.schema.tablename,但你的配置里把spark_catalog设成了Iceberg的Hadoop catalog,所以如果你的catalog名就是spark_catalog,写表路径得改成spark_catalog.schema.tablename,不过先解决数据源加载的问题再说
还有个验证方法:重启集群后,运行spark.sql("SHOW DATA SOURCES"),看看结果里有没有iceberg。如果没有,说明jar包确实没加载成功,那优先确认版本匹配,重新安装对应版本的Iceberg包,一定要重启集群,不然新安装的库不会生效。
最后给你一个完整的Spark初始化脚本参考:
spark.sql.catalog.spark_catalog = org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.spark_catalog.type = hadoop spark.sql.catalog.spark_catalog.warehouse = abfss://container@storageaccount.dfs.core.windows.net/ spark.sql.extensions = org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions spark.hadoop.fs.azure.account.key.storageaccount.dfs.core.windows.net = <你的存储账户密钥> spark.databricks.cluster.profile = singleNode
按照上面的步骤调整后,应该能解决这个[DATA_SOURCE_NOT_FOUND]的错误,如果还有问题,可以去集群的“库”页面检查下Iceberg的jar是不是真的被成功安装并加载了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

