Iceberg 引擎集成

最近更新时间:2025-04-14 14:31:02

我的收藏
本文为您演示如何在 EMR 上使 Hive、Spark、Flink 引擎支持 Iceberg 表。

开发准备

确认您已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考 创建集群
在创建 EMR 集群时在软件配置界面选择 Iceberg 组件,并按照需求勾选集成的 Spark、Hive、Flink 引擎。

Hive 集成

方式一:临时添加依赖环境

使用 Hive 命令启动 Hive,使用 add 命令添加 Hive 使用 Iceberg 依赖所需要的 jar 包:
//先启动hive引擎,在hive命令行添加依赖包
hive

ADD JAR {iceberg-hive-runtime};
{iceberg-hive-runtime} 是依赖 jar 包的绝对路径,jar 包位于 /usr/local/service/iceberg 目录下。
注意:
使用临时添加依赖环境的方法,每次启动 Hive 时都需要使用 add 命令添加一次依赖。

方式二:使用额外 lib 目录

将 Hive 使用 Iceberg 依赖所需要的 jar 包拷贝到 auxlib 目录:
cp {iceberg-hive-runtime} /usr/local/service/hive/auxlib
将 Iceberg 依赖添加至 Hive 中之后,再启动 Hive 即可使用 Iceberg 表格。

Spark 集成

将 Spark 使用 Iceberg 依赖所需要的 jar 包拷贝到 jars 目录:
cp {iceberg-spark-runtime} /usr/local/service/spark/jars
{iceberg-spark-runtime} 是依赖 jar 包的绝对路径,jar 包位于 /usr/local/service/iceberg 目录下。
使用以下命令启动支持 Iceberg 表的 Spark sql 命令行:
spark-sql --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \\
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog \\
--conf spark.sql.catalog.spark_catalog.type=hive \\

将 Iceberg 配置写入配置文件

可以通过将 Iceberg 配置写入配置文件的方式,让 Spark sql 默认支持 Iceberg。
进入EMR控制台,点击 集群服务 > SPARK > 配置管理 页面,选择 spark-defaults.conf 配置文件,新增以下参数值:
spark.sql.extensions = org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark.sql.catalog.spark_catalog = org.apache.iceberg.spark.SparkSessionCatalog
spark.sql.catalog.spark_catalog.type = hive
注意:
这里默认配置了 Hive 类型的 Catalog,其他类型的 Catalog 配置参考 官方文档

Flink 集成

将 Flink 使用 Iceberg 依赖所需要的 jar 包拷贝到 auxlib 目录。
cp {iceberg-flink-runtime} /usr/local/service/flink/lib
cp /usr/local/service/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.2.2.jar /usr/local/service/flink/lib/
cp /usr/local/service/hive/lib/hive-exec-3.1.3.jar /usr/local/service/flink/lib/
cp /usr/local/service/hive/lib/libfb303-0.9.3.jar /usr/local/service/flink/lib/

//启动支持iceberg表的flink sql命令行
./bin/sql-client.sh embedded shell
{iceberg-flink-runtime} 是依赖 jar 包的绝对路径,jar 包位于 /usr/local/service/iceberg 目录下。
{hadoop-mapreduce-client-core-3.2.2.jar}、{hive-exec-3.1.3.jar}、{libfb303-0.9.3.jar}三个 jar 包需要更改为对应的版本。