Mac本地PySpark连接Iceberg Catalog提示类找不到的问题求助
问题解决:PySpark连接Iceberg Catalog提示找不到类
org.apache.iceberg.spark.SparkCatalog 问题原因
spark-sql中使用的是Iceberg Spark运行时包(iceberg-spark-runtime),该包包含了Iceberg与Spark集成所需的所有核心类(包括Catalog实现);但PySpark代码错误地使用了仅提供扩展功能的iceberg-spark-extensions包,缺失Catalog核心实现类,导致JVM无法找到org.apache.iceberg.spark.SparkCatalog。
修复方案
将PySpark配置中的spark.jars.packages替换为和spark-sql一致的runtime包即可解决:
修改后的PySpark代码
import pyspark if __name__ == '__main__': conf = (pyspark.SparkConf(). setAppName("App"). # 替换为包含完整依赖的iceberg-spark-runtime包 set('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.2'). set('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions'). set('spark.sql.catalog.local', 'org.apache.iceberg.spark.SparkCatalog'). set('spark.sql.catalog.local.type', 'hadoop'). set('spark.sql.catalog.local.warehouse', '~/warehouse') ) spark = (pyspark.sql.SparkSession.builder .master("local[2]") .config(conf=conf) .getOrCreate()) spark.sql('use local') # 可添加测试查询验证连接 spark.sql("SELECT * FROM local.db.table").show()
额外说明
iceberg-spark-runtime是Iceberg官方打包的全量运行时依赖,包含核心功能、扩展、Catalog实现等所有必要组件,适合快速部署,避免依赖缺失问题。- 若需细粒度依赖管理,可同时引入
iceberg-spark和iceberg-spark-extensions包,但需保证版本一致:org.apache.iceberg:iceberg-spark-3.5_2.12:1.4.2,org.apache.iceberg:iceberg-spark-extensions-3.5_2.12:1.4.2
内容的提问来源于stack exchange,提问作者shalama
相关产品推荐
相关产品推荐

