大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • 数据湖介绍
  • Iceberg

    • Iceberg 概述
    • Iceberg 数据类型
    • Iceberg 演化
    • Iceberg 分区
    • Iceberg 文件组织形式
    • Iceberg Spark 入门
    • Iceberg Spark DDL
    • Iceberg Spark DQL
    • Iceberg Spark SQL 存储过程
  • Hudi

    • Hudi 概述
  • 数据湖
  • Iceberg
Will
2022-03-17

Iceberg Spark DDL

Iceberg Spark DDL 操作和原生的 Spark SQL 操作区别不大,主要包含create table、replace table、drop table、alter table操作,但是几项比较特殊的:

  1. 所有的操作前面都需要拼接catalog_name,如:
select * from hadoop_catalog.test_db.student;
1
  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
  1. 指定分区时可以使用隐藏分区函数,如:
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

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

← Iceberg Spark 入门 Iceberg Spark DQL→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式