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

相关推荐
StarRocks_labs4 天前
StarRocks 4.1:聚焦生产实践,持续降低运维复杂度
运维·starrocks·iceberg·schema·物化视图·tablet·存算分离架构
分布式存储与RustFS1 个月前
对象存储正在吞掉数据湖:S3 Tables 把 Iceberg 收编成存储的原生能力
iceberg·对象存储·s3·分布式对象存储·rustfs·minio平替·s3 tables
代码不会写1 个月前
Apache Iceberg:架构原理、读写机制、性能优化与生态
性能优化·架构·apache·iceberg
不动明王19841 个月前
能力联邦:Presto 的一种可能演进方向
大数据·iceberg·presto·湖仓·lance·联邦查询引擎
分布式存储与RustFS3 个月前
基于Rust的国产开源对象存储RustFS:S3 Table对Iceberg数据湖的适配详解
rust·开源·iceberg·对象存储·rustfs·minio平替·s3 table
分布式存储与RustFS3 个月前
Apache Iceberg数据湖轻量化搭建:基于Rust开源存储方案
开源·apache·iceberg·rustfs·ai存储·ai memory·s3 table
yyoc973 个月前
本地 Flink on K8s + Iceberg + MinIO 实时数仓平台 — AI部署指南与踩坑实录
大数据·ai·flink·kubernetes·iceberg
StarRocks_labs3 个月前
StarRocks × Iceberg:联邦查询实践解析
数据库·starrocks·sql·iceberg·物化视图
StarRocks_labs5 个月前
从 Presto 到 StarRocks:作业帮架构升级实践
starrocks·sql·架构·iceberg·作业帮