// 1. 创建 SparkSession 基础配置val spark:SparkSessionSparkSession.builder().master(local)// 运行在本地模式生产环境通常是 yarn 或 k8s.appName(SparkOperateIceberg)// // 2. 配置 Hive Catalog// .config(spark.sql.catalog.hive_prod,org.apache.iceberg.spark.SparkCatalog)// 注册名为 hive_prod 的 catalog.config(spark.sql.catalog.hive_prod.type,hive)// 类型为 hive.config(spark.sql.catalog.hive_prod.uri,thrift://node1:9083)// Hive Metastore 地址.config(spark.sql.engine.hive.enabled,true)// 启用 Hive 支持// // 3. 配置 Hadoop Catalog// .config(spark.sql.catalog.hadoop_prod,org.apache.iceberg.spark.SparkCatalog)// 注册名为 hadoop_prod 的 catalog.config(spark.sql.catalog.hadoop_prod.type,hadoop)// 类型为 hadoop.config(spark.sql.catalog.hadoop_prod.warehouse,hdfs://mycluster/sparkoperateiceberg)// 元数据存储路径// 4. 构建会话.getOrCreate()用于创建 SparkSession并同时配置了 Hive Catalog​ 和 Hadoop Catalog。defmain(args:Array[String]):Unit{// 创建 Spark Sessionvalspark:SparkSessionSparkSession.builder().master(local)// 运行模式本地调试使用 local.appName(SparkOperateIceberg)// 设置 Hive Catalog .config(spark.sql.catalog.hive_prod,org.apache.iceberg.spark.SparkCatalog).config(spark.sql.catalog.hive_prod.type,hive).config(spark.sql.catalog.hive_prod.uri,thrift://node1:9083)// Hive Metastore 地址.config(iceberg.engine.hive.enabled,true)// 启用 Iceberg 对 Hive 引擎的支持// 设置 Hadoop Catalog .config(spark.sql.catalog.hadoop_prod,org.apache.iceberg.spark.SparkCatalog).config(spark.sql.catalog.hadoop_prod.type,hadoop).config(spark.sql.catalog.hadoop_prod.warehouse,hdfs://mycluster/sparkoperateiceberg)// 仓库路径.getOrCreate()spark}版本兼容性说明Spark​ 与 Iceberg​ 版本的兼容性问题使用的版本Iceberg 0.12.1。兼容性该版本兼容 Spark 2.4​ 及以上版本。Spark 2.4 的限制不支持 DDL数据定义语言操作、增加分区及分区转换、Iceberg 元数据查询、insert into/overwrite等操作。推荐方案建议使用 Spark 3.x​ 版本来整合 Iceberg 0.12.1。图中实际使用的是 Spark 3.1.2​ 版本这是官方推荐的稳定组合。关键点总结Catalog 类型Hive Catalog依赖于 Hive Metastore (thrift://node1:9083)适合企业已有 Hive 环境的场景。Hadoop Catalog直接基于文件系统HDFS路径为 hdfs://mycluster/sparkoperateiceberg配置更简单不依赖 Hive。核心依赖代码中注册的 Catalog 实现类是 org.apache.iceberg.spark.SparkCatalog这是 Iceberg 提供的标准 Spark Catalog 接口。4sparkhe iceberg版本匹配iceberg0.12.1支持spark2.4 ,但是不完善建议直接用spark3 spark3 对应hive3 推荐hive3.1.2