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

相关推荐
分布式存储与RustFS19 天前
基于Rust的国产开源对象存储RustFS:S3 Table对Iceberg数据湖的适配详解
rust·开源·iceberg·对象存储·rustfs·minio平替·s3 table
分布式存储与RustFS20 天前
Apache Iceberg数据湖轻量化搭建:基于Rust开源存储方案
开源·apache·iceberg·rustfs·ai存储·ai memory·s3 table
yyoc9722 天前
本地 Flink on K8s + Iceberg + MinIO 实时数仓平台 — AI部署指南与踩坑实录
大数据·ai·flink·kubernetes·iceberg
StarRocks_labs25 天前
StarRocks × Iceberg:联邦查询实践解析
数据库·starrocks·sql·iceberg·物化视图
StarRocks_labs3 个月前
从 Presto 到 StarRocks:作业帮架构升级实践
starrocks·sql·架构·iceberg·作业帮
南修子4 个月前
【Flink 30天】Day22-23 FlinkSQL 性能优化:Mini-Batch + 两阶段聚合 + TOP-N + 完整配置
性能优化·flinksql·数据倾斜·mini-batch·两阶段聚合
迎仔5 个月前
08-Apache Iceberg 通俗指南:给“胡乱堆放”的文件加个“智能账本”
apache·iceberg
AlfredZhao7 个月前
为什么 Iceberg 在数据湖领域这么火
iceberg
zgxme7 个月前
Iceberg Rest Catalog + OSS 实践踩坑记录:Polaris x-amz-content-sha256 报错 与 Nessie 配置
iceberg·database