内容纲要
概要描述
一些非常极端/特殊的场景,需要降低holodesk表的副本数为1,本文介绍如何操作。
注:单副本有丢数风险,强烈不建议配置
详细介绍
1. 建表时如何指定副本数为1
在创建holodesk表的时候,默认副本数为3,如果强制指定副本数为1,在metastore层面会过不去,建表失败:SQL 错误 [20604] [08S01]: EXECUTION FAILED: Task DDL error HiveException: [Error 20604] Can not create table: Do not support create 1 replica table, please set replica to 3 as least.
DROP TABLE IF EXISTS EMP_HOLO_SINGLEREPLICA;
CREATE TABLE EMP_HOLO_SINGLEREPLICA(
EMPNO int,
ENAME string,
JOB string,
MGR INT,
HIREDATE DATE,
SAL INT,
COMM INT,
DEPTNO INT
)
STORED AS HOLODESK
with tablesize 1GB
replication 1;
需要在quark组件,添加自定义参数 holodesk.single.replica.enabled,配置为true,然后 配置服务+重启quark服务,单副本holodesk表才能够创建成功。(必须全局配置,session级set无效)
2. 已有表如何降低副本数为1
通过shiva restful api完成
curl -X PUT "<host>:<port>/table/replica_factor/<replica_factor>?namespace=<namespace>&table_name=<table_name>"
不能实现表名的通配,表数量多的话,可以写个脚本逐个操作
[root@kv1~]# curl -k -ushiva:shiva -X PUT "https://172.18.131.171:4567/table/replica_factor/1?database=default&table_name=default.emp_holo_c8e8b3a5-af54-4dc8-9920-a5db1e3d8c73"
{"log_id": 1773339706102,"code": 0,"msg": "table:default.emp_holo_c8e8b3a5-af54-4dc8-9920-a5db1e3d8c73 replication factor updated"}