zoukankan      html  css  js  c++  java
  • hive表批处理

    对hive中的表进行批量处理,如下是一个简单的脚本

    #给定一个hive数据库名,生成它的所有表的create SQL语句,并导出到文件
    create_fun(){
    hive -e "show create table $1.$2">>$3
    }
    
    #显示一个表中所有的分区
    show_partitions(){
    hive -e "show partitions $1.$2 ;">>$3
    }
    
    #将一个表中所有分区重命名
    rename_partition(){
    start_day=$3
    end_day=$4
    
    while [ ${start_day} -le ${end_day} ]
    do
        day_int=`date  +"%Y%m%d" -d  "${start_day}"`
        day_str=`date  +"%Y-%m-%d" -d  "${start_day}"`
        hive -e "alter table $1.$2 PARTITION (dt='${day_int}') RENAME TO PARTITION (dt='${day_str}');"
        start_day=`date  +"%Y%m%d" -d  "${start_day} 1 days" `
    done
    }
    #删除一个表中的分区
    drop_partition(){
    hive -e "alter table $1.$2 drop PARTITION (dt='$3')"
    }
    
    #更新一个hive表的列分隔符
    modify_separator(){
    hive -e "alter table $1.$2 set SERDEPROPERTIES('field.delim'='01');"
    }
    
    
    #指定一个数据库,查询出所有table,并对符合条件的table进行处理
    database(){
    basename=$1
    mid_file=mid.txt
    result_file=${basename}.txt
    match=_ods
    hive -e "use ${basename};show tables">${mid_file}
    sed -i '/WARN/d' ${mid_file}
    cat ${mid_file} |grep ${match} |while read line
    do
        drop_partition ${basename} $line $2
    done
    rm -rf ${mid_file}
    }
    
    
    #program start #
    database $1 $2
  • 相关阅读:
    第三次作业
    C语言第二次作业
    第一次作业
    C语言第六次作业
    C语言第五次作业
    C语言第四次作业
    C语言第三次作业
    C语言第二次作业
    C语言第一次作业
    C语言学习笔记(6)
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/10002312.html
Copyright © 2011-2022 走看看