doris_2.1.6无法创建多副本的表

Viewed 30

CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
zbname varchar(100),
datav int,
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
报错:
image.png
修改为单副本后创建成功:
CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
zbname varchar(100),
datav int,
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);
1731555971639.png
集群为1fe 3be
上传中...

4 Answers

看看你be的状态,你这个图片没有上传成功

定位了问题,发现下面建表语句:
CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
datav int,
zbname varchar(100),
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 3"
);
如果jzname, code,datav数据类型不一样会报错。
97f67d15af05266e372dcf8fda3a42c.jpg
如果数据类型一致,则可成功。
17c0183c6bb61571e64917c0eb1cc9f.jpg

CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
datav int,
zbname varchar(100),
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 3"
);
这个语句报错,detailMessage =ercode m2, detailMessape = faiied to find enough backend, please check the replication num,ceplication
Create failed replications:replication teg:("location":"default"),replication num:3,

CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
datav int,
zbname varchar(100),
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 2"
); 但是副本改成2就成功了。
CREATE TABLE main_ref_map (
jzname varchar(255) ,
code varchar(255) ,
datav varchar(255),
zbname varchar(100),
isdel int,
ifmain int,
create_time varchar(100)
)
DISTRIBUTED BY HASH(jzname, code,datav)
BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 3"
); 我把hash列做成类型一样的,还是三副本,成功了。

总结:2.1.6如果hash 列的类型不一致,会导致不同副本数下的建表失败。我三个hash列,俩列类型一样,可以创建1副本和2副本,三副本失败。如果三个列类型一致,则创建1 2 3副本全成功。

以上问题如果可以复现,个人觉得应该是个bug。如果不能复现,我的建表语句可能触发了什么机制。需要社区帮我排查一下。