ハイブテーブルのバックアップとクリーンアップスクリプト

免責事項:この記事はブロガーオリジナル記事です、ソースがあるhttp://blog.csdn.net/silentwolfyh https://blog.csdn.net/silentwolfyh/article/details/89512215
#!/usr/bin/env bash

:<<EOF
需求:将${db}中的${tableName}备份到${bak_db}中,且删除${db}.${tableName}
说明:
1、hive的外部表不能使用truncate函数
2、drop hiveTable,只是删除表结构,但数据还在
3、hive 没有delete表功能
EOF

if [ $# != 2 ] ; then
echo "请输入参数:库名 表名"
echo " e.g.: ./cleanHiveTable.sh app app_system_yh_d"
exit 1;
fi

bak_db="bak"
db=$1
tableName=$2

#创建表
createSql="create table ${bak_db}.${tableName} as select * from ${db}.${tableName};"
echo -e "创建新表Sql==>${createSql}"
hive -e "${createSql}"

dropSql="drop table ${db}.${tableName}"
echo -e "删除旧表Sql==>${dropSql}"
hive -e "${dropSql}"

deletePath="/user/hive/warehouse/${db}.db/${tableName}"
echo -e "删除目录Sql==>${deletePath}"
hadoop fs -rmr ${deletePath}

おすすめ

転載: blog.csdn.net/silentwolfyh/article/details/89512215