Hbase刪除名稱空間指令碼

皎夜既明發表於2020-10-13

Hbase沒辦法直接刪除namespace,需要先把名稱空間下的表都刪了才能刪除,網上沒找到現成的指令碼,所以自己寫了個,如果有問題,歡迎指出來。
執行時需要傳入namespace的名稱。

#!/bin/bash
#讀取名稱空間下的所有表名
list_tables(){
/opt/newland/core/hbase/bin/hbase shell << EOF
list_namespace_tables "$1"
EOF
}
#刪除該名稱空間下的表
drop_tables(){
/opt/newland/core/hbase/bin/hbase shell << EOF
disable "$1:$2"
drop "$1:$2"
EOF
}
#刪除名稱空間
drop_namespace(){
/opt/newland/core/hbase/bin/hbase shell << EOF
drop_namespace "$1"
EOF
}
#獲取所有表名
table_info=$(list_tables $1)
#過濾後只剩表明
tables_name=$(echo $table_info | awk -F " TABLE " '{print $2}' | awk -F " row" '{print $1}'|awk -F " " 'OFS=" "{$NF="";print}')
#迴圈執行刪除該名稱空間下的表
for s in ${tables_name[@]}
do
echo "傳入引數:$1"
echo "表名:$s"
    drop_tables $1 $s
done
#刪除名稱空間
drop_namespace $1

相關文章