在DLI使用Hudi提交Spark SQL作业
登录DLI管理控制台,选择“SQL编辑器”首进入提交SQL作业的界面。提交SQL作业时需要选择支持Hudi的Spark SQL队列。
- 创建一张Hudi表:
将如下的建表语句粘贴至DLI SQL编辑器的输入区域,修改 LOCATION,执行引擎选择Spark,配置队列,数据目录,数据库,随后点击右上角的执行按钮,提交作业。
注意:由DLI提供元数据服务时,暂不支持创建Hudi内表,即必须配置 LOCATION 指向 OBS 路径。CREATE TABLE hudi_table (id int, comb long, name string, dt date) USING hudi PARTITIONED BY (dt) OPTIONS ( type = 'cow', primaryKey = 'id', preCombineField = 'comb' ) LOCATION 'obs://bucket/path/hudi_table';
等待下方执行历史显示作业执行成功,代表建表成功,此时创建了一张Hudi的COW分区表。
可以执行 SHOW TABLES 检查建表是否成功:
SHOW TABLES;
- 执行SQL写入刚才创建的Hudi表:
INSERT INTO hudi_table VALUES (1, 100, 'aaa', '2021-08-28'), (2, 200, 'bbb', '2021-08-28');
随后可以在编辑器下方的”执行历史(最近一天)”窗格中检查执行结果,或者点击左侧”作业管理”-> ”SQL作业”跳转到SQL作业记录中检查。
- 在执行SQL的时候配置Hudi参数:
DLI不支持直接使用SET语句配置参数
点击”设置”,随后在”参数设置”一栏可以配置键和值,Hudi的参数可以通过此处提交。配置在此处的参数会在提交SQL作业时被应用。
随后可以在左侧菜单点击”作业管理”->”SQL作业”,随后在列表中选中执行的作业,并点击下方窗格,唤出作业详情,在”参数设置”一栏中,可以检查参数配置情况。
- 执行SQL查询刚才写入的内容:
select id,comb,name,dt from hudi_table where dt='2021-08-28';
可以在编辑器下方窗格查看查询结果。
- 删除刚才创建的Hudi表:
如果创建的是外表,执行SQL删除表时仅删除Hudi表的元数据,数据仍然存在OBS桶中,需要手动清理。
DROP TABLE IF EXISTS hudi_table;