torc分桶表如何避免automerge参数合并

  其他常见问题
内容纲要

概要描述


默认情况下,orc事务表的bucket在automerge参数开启时,会做合并。

而分桶表本来就能够根据分桶来确定task,如果进行automerge,可能导致大文件合并的情况。本文结合sql demo介绍并结合参数避免该问题。

详细说明


1.创建样例表

创建一张orc事务表,7个分桶

DROP TABLE IF EXISTS EMP_TORC;
CREATE TABLE EMP_TORC(
EMPNO int,
ENAME string,
JOB string,
MGR INT,
HIREDATE DATE,
SAL INT,
COMM INT,
DEPTNO INT
)CLUSTERED BY (empno) INTO 7 BUCKETS
STORED AS ORC_TRANSACTION;

INSERT INTO EMP_TORC VALUES (1,'SMITH','CLERK',7902,tdh_todate('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP_TORC VALUES (2,'ALLEN','SALESMAN',7698,tdh_todate('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP_TORC VALUES (3,'WARD','SALESMAN',7698,tdh_todate('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP_TORC VALUES (4,'JONES','MANAGER',7839,tdh_todate('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP_TORC VALUES (5,'MARTIN','SALESMAN',7698,tdh_todate('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP_TORC VALUES (6,'BLAKE','MANAGER',7839,tdh_todate('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP_TORC VALUES (7,'CLARK','MANAGER',7839,tdh_todate('9-6-1981','dd-mm-yyyy'),2450,NULL,10);

此时,我们使用小文件合并参数,对这张表做查询

SET ngmr.partition.automerge=true;
SET ngmr.partition.mergesize.mb = 100;
SELECT * FROM emp_torc;

从DBAService页面可以看到,读表阶段启动了3个task,做了合并。

file

这里介绍下 ngmr.automerge.ignore.bucket 这个参数,控制在automerge的时候,是否忽略掉 对分桶表做automerge,默认值false,也就是bucket表默认是automerge的。

该参数由WARP-78710引入,在Patch-inceptor-transwarp622-x86_arm64-20230404-12及之后都支持。

开启该参数,表示不会对bucket表做automerge :

SET ngmr.automerge.ignore.bucket=true;
SELECT * FROM emp_torc;

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。