iceberg FlinkSQL 特性

版本

iceberg 1.2.0

flink 1.16.0

建表与限制

创建一个带有主键的FlinkSQL表

sql 复制代码
CREATE TABLE `hive_catalog`.`default`.`sample_with_key` (
    id BIGINT COMMENT 'unique id',
    data STRING,
    primary key (id) not enforced
);

截止 iceberg 1.2.0 FlinkSQL 不支持隐式分区,不支持计算列,watermark

FlinkSQL 在hive中创建的表默认是外部表

修改表和删除表

sql 复制代码
ALTER TABLE `hive_catalog`.`default`.`sample` SET ('write.format.default'='avro');

ALTER TABLE `hive_catalog`.`default`.`sample` RENAME TO `hive_catalog`.`default`.`new_sample`;
sql 复制代码
drop table new_sample;

因为是默认创建的外部表,删除后在hdfs还存在data和metadata目录,但是数据被清空了

插入表和upsert问题

iceberg v2 版本的表在创建了主键的前提下支持upsert操作

sql 复制代码
CREATE TABLE `hive_catalog`.`default`.`sample_test_upsert` (
    `id` INT COMMENT 'unique id',
    `data` STRING NOT NULL,
    PRIMARY KEY(`id`) NOT ENFORCED
) with ('format-version'='2', 'write.upsert.enabled'='true');

在upsert模型下,分区字段必须是主键

upsert模式下存在的问题是,性能不好

新增两条数据

sql 复制代码
INSERT INTO `hive_catalog`.`default`.`sample_test_upsert` VALUES (1, 'a');
INSERT INTO `hive_catalog`.`default`.`sample_test_upsert` VALUES (2, 'b');

修改主键为2的数据

sql 复制代码
INSERT INTO `hive_catalog`.`default`.`sample_test_upsert` VALUES (2, 'c');

结果是主键为2的数据的data字段的字从b更新为了c

相关推荐
智海观潮17 天前
Unity Catalog与Apache Iceberg如何重塑Data+AI时代的企业数据架构
大数据·人工智能·ai·iceberg·catalog
LiRuiJie19 天前
基于Hadoop3.3.4+Flink1.17.0+FlinkCDC3.0.0+Iceberg1.5.0整合,实现数仓实时同步mysql数据
大数据·hadoop·flink·iceberg·flinkcdc
StarRocks_labs22 天前
Lakehouse x AI ,打造智能 BI 新体验
大数据·starrocks·人工智能·iceberg·lakehouse·智能bi·湖仓分析
兰丰岐2 个月前
使用apache amoro + trino+minio搭建iceberg数据湖架构
iceberg·amoro·apache amoro
ClouGence2 个月前
MySQL + CloudCanal + Iceberg + StarRocks 构建全栈数据服务
数据库·mysql·iceberg·dba
StarRocks_labs3 个月前
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
大数据·starrocks·云原生·iceberg·物化视图
bigdata_zh3 个月前
flinksql实践(从kafka读数据)
kafka·flinksql
镜舟科技5 个月前
Apache Iceberg 解析,一文了解Iceberg定义、应用及未来发展
starrocks·数据分析·apache·iceberg·数据湖·湖仓一体·元数据
小涵5 个月前
【分布式】冰山(Iceberg)与哈迪(Hudi)对比的基准测试
大数据·数据库·分布式·阿里云·架构·iceberg·hudi