Iceberg Spark DDL
Iceberg Spark DDL 操作和原生的 Spark SQL 操作区别不大,主要包含create table
、replace table
、drop table
、alter table
操作,但是几项比较特殊的:
- 所有的操作前面都需要拼接
catalog_name
,如:
select * from hadoop_catalog.test_db.student;
1
- 建表时要增加
using iceberg
子句,如:
create table hadoop_catalog.test_db.student (
id bigint,
name string,
age int,
udt timestamp
)
using iceberg;
1
2
3
4
5
6
7
2
3
4
5
6
7
- 指定分区时可以使用隐藏分区函数,如:
create table hadoop_catalog.test_db.student (
id bigint,
name string,
age int,
udt timestamp
)
using iceberg
partitioned by (days(udt)); -- 可以指定多个分区规则,逗号隔开
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Iceberg Spark SQL 中支持的隐藏分区转换函数有:
- years(ts):按年分区
- months(ts):按月分区
- days(ts) 或 date(ts):按天分区
- hours(ts) 或 date_hour(ts):按小时分区
- bucket(N, col):按散列值 mod N 个桶进行分区
- truncate(L, col):按固定长度分区。String 类型会按照指定的长度分区,如果是 Integer 或 Long 类型会按照固定步长分区,如:truncate(10, i)会生成 0,10,20,30...
更多语法细节可以查询Iceberg 官网 (opens new window),随着 Iceberg 发展可能会有更多特性和语法糖出现。
上次更新: 2023/11/01, 03:11:44