1、配置参数和jar包
1、将构建好的Iceberg的spark模块jar包,复制到spark jars下
cp /opt/module/iceberg-apache-iceberg-0.11.1/spark3-extensions/build/libs/* /opt/module/spark-3.0.1-bin-hadoop2.7/jars/
cp /opt/module/iceberg-apache-iceberg-0.11.1/spark3-runtime/build/libs/* /opt/module/spark-3.0.1-bin-hadoop2.7/jars/
2、配置spark参数,配置Spark Sql Catlog,可以用两种方式,基于hive和基于hadoop,这里先选择基于hadoop。修改spark conf目录下的spark-default.conf
spark.sql.catalog.hive_prod = org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.hive_prod.type = hive
spark.sql.catalog.hive_prod.uri = thrift://hadoop1:9083
spark.sql.catalog.hadoop_prod = org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.hadoop_prod.type = hadoop
spark.sql.catalog.hadoop_prod.warehouse = hdfs://mycluster/spark/warehouse
spark.sql.catalog.catalog-name.type = hadoop
spark.sql.catalog.catalog-name.default-namespace = db
spark.sql.catalog.catalog-name.uri = thrift://hadoop1:9083
spark.sql.catalog.catalog-name.warehouse= hdfs://mycluster/spark/warehouse
2、Spark sql操作
2.1、建表
使用spark sql创建iceberg表,配置完毕后,会多出一个hadoop_prod.db数据库,但是注意这个数据库通过show tables是看不到的。可以直接通过use hadoop_prod;没有报错则表示配置成功。然后可以create database db;并通过以下命令建表:
use hadoop_prod.db;
create table testA(
id bigint,
name string,
age int,
dt string)
USING iceberg
PARTITIONED by(dt);
当向表中执行插入语句,可以直接通过select查询数据
insert into testA values(1,'张三',18,'2021-06-21');
select * from hadoop_prod.db.testA;
2.2、overwrite操作
当向表中执行overwrite覆盖操作是,与 hive 一样,会将原始数据重新刷新。注意覆盖的不是整张表的数据,只是这个分区的数据。被覆盖的数据不会被物理删除,还会存在HDFS上,除非是对表进行drop操作。
2.3、动态覆盖
1、Spark的默认覆盖模式是静态的,但在写入iceberg时建议使用动态覆

本文详细介绍Apache Iceberg在Spark环境下的配置及使用方法,包括配置参数、建表、数据增删改查、快照管理等核心功能,并探讨存在的问题与不足。
最低0.47元/天 解锁文章
1786

被折叠的 条评论
为什么被折叠?



