如何将holodesk表的副本数调整为1

  SQL报错
内容纲要

概要描述


一些非常极端/特殊的场景,需要降低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"}

这篇文章对您有帮助吗?

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

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

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

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