更新时间:2025-04-01 GMT+08:00
分享

常用SQL介绍

  • MRS后台客户端执行Hudi相关的SQL,必须source Hudi的component_env。
  • DGC执行Hudi相关的SQL,如果是API连接必须在作业的运行中参数添加“--conf spark.support.hudi=true”。

功能

SQL写法

注意事项

更新写

  • insert into SinkTable values()
  • insert into SinkTable select * from SourceTable

常用于集成加工Hudi表,按照主键去更新SinkTable的数据。

覆盖写

  • insert overwrite SinkTable values()
  • insert overwrite SinkTable select * from SourceTable
  • SinkTable是无分区表,则是整表覆盖。
  • SinkTable是分区表,则是分区级覆盖。

覆盖写

  • insert overwrite table SinkTable values()
  • insert overwrite table SinkTable select * from SourceTable
  • SinkTable是无分区表,则是整表覆盖。
  • SinkTable是分区表,则是分区级覆盖。

bulk_insert写入

参考常用参数介绍及使用场景章节.

仅适用Hudi表做第一次迁移。

更新写

  • update SinkTable set 字段名=值 where 字段名=值

常用于快速修正Hudi中的小批量数据,不适合直接用于集成加工。

merge into语法

  • merge into SinkTable as t1 using (子查询) as t2 on t1.字段 = t2.字段 when matched then

不推荐。

删除行级数据

  • delete from SinkTable where 字段名=值
  • delete from SinkTable where 字段名 in (子查询)

delete操作会写入数据,删除的数据量越大,delete执行越慢,适合用于删除小批量数据。

查询Hudi表结构

desc formatted SinkTable

查询Hudi表所有信息,推荐使用。

查询Hudi表结构

show create table SinkTable

查询Hudi表所有信息,不推荐,可读性差。

删除分区

  • 单分区

    alter table SinkTable drop partition (分区列 = 分区值)

  • 多分区

    alter table SinkTable drop partition (分区列1 = 分区值, 分区列2 = 分区值, 分区列3......)

  • MRS后台客户端执行该命令,必须source Hudi的component_env。
  • DGC执行该命令,如果是api连接必须在作业的运行中参数添加--conf spark.support.hudi=true。

删除表

  • drop table 表名
  • drop table 表名 purge
  • 对内表执行"drop table 表名"会删除hive上的表以及数据存储目录。
  • 对外表执行""drop table 表名""仅会删除hive上的表,不删除数据存储目录。
  • 对Hudi表进行彻底清理,直接使用"drop table 表名 purge"。对COW表执行,hive上的表以及数据目录将全部被清理。对MOR表执行,hive上的3张表(主表,rt表,ro表)以及数据目录将全部被清理。

查看Hudi表compaction计划

show compaction on SinkTable

查看返回结果的第二列action,如果值是commit则该计划已经被运行,如果值是compaction则该计划没有被执行。

变更Schema

Hudi Schema演进

  • DGC执行该命令,如果是api连接必须在作业的运行中参数添加“--conf spark.support.hudi=true”。
  • 所有的alter命令,都必须同时执行以下两条命令:

    set hoodie.schema.evolution.enable=true;

    alter table SinkTable xxx;

执行compaction

run compaction on SinkTable

不能直接单条命令执行,请参考选择合适的表服务执行方式常用参数介绍及使用场景

执行clean

run clean on SinkTable

不能直接单条命令执行,请参考选择合适的表服务执行方式常用参数介绍及使用场景

执行archive

run archivelog on SinkTable

不能直接单条命令执行,请参考选择合适的表服务执行方式常用参数介绍及使用场景

相关文档