一、开发准备
·确认你已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考 创建集群。
·在创建 EMR 集群时在软件配置界面选择 Iceberg 组件,并按照需求勾选集成的 Spark、Hive、Flink 引擎。
二、方式一:临时添加依赖环境
使用 Hive 命令启动 Hive,使用 add 命令添加 Hive 使用 Iceberg 依赖所需要的 jar 包:
//先启动hive引擎,在hive命令行添加依赖包hiveADD 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.IcebergSparkSessionExtensionsspark.sql.catalog.spark_catalog = org.apache.iceberg.spark.SparkSessionCatalogspark.sql.catalog.spark_catalog.type = hive
注意:这里默认配置了 Hive 类型的 Catalog,其他类型的 Catalog 配置参考 产品文档。
六、Flink 集成
将 Flink 使用 Iceberg 依赖所需要的 jar 包拷贝到 auxlib 目录。
cp {iceberg-flink-runtime} /usr/local/service/flink/libcp /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 包需要更改为对应的版本。