使用hive表的过程中经常需要一些便捷操作:

一、hdfs文件批量写SUCCESS文件,一般来说hive表生成结束,会产生一个_SUCCESS文件判断数据是否正常刷新完成

但是如果是动态分区插入表进行写文件,那么写_SUCCESS文件需要批量写到各个动态分区内。

可以使用以下代码片段在脚本结尾进行判断:#遍历目标文件目录,awk获取文件路径

for file in `HADOOP_HOME/bin/hadoop fs -ls $path | awk '{print $8}'`

do

#检查文件是否有数据写入

line_num=`$HADOOP_HOME/bin/hadoop fs -du -s $file | tail -1 | awk '{print $1}'`

if [[ $line_num -eq 0 ]]

then

echo "FATAL $V_PATH_DIR is empty"

else

echo "NOTICE success"

#创建_SUCCESS文件

$HADOOP_HOME/bin/hadoop fs -touchz $file /_SUCCESS

fi

二、hdfs文件批量添加||恢复分区

1、执行命令快速恢复MSCK REPAIR TABLE $tablename

2、写个shell脚本进行遍历循环恢复# !/bin/bash

start_dt=$1

end_dt=$2

level=$3

table=$4

filepath=$5

#获取日期差

diff_days=$(((`date -d "${end_dt}" +%s` - `date -d "${start_dt}" +%s`)/3600/24))

#循环遍历日期写分区

for i in `seq 0 ${diff_days}`;

do

dt=`date -d "${i} days ${start_dt}" +%Y%m%d`

# echo "hadoop fs -touchz ${filepath}/${level}/${table}/dt=${dt}/_SUCCESS"

# hadoop fs -touchz ${filepath}/${level}/${table}/dt=${dt}/_SUCCESS

echo "ALTER TABLE ${table} ADD PARTITION (dt=${dt}) location '${filepath}/${level}/${table}/dt=${dt}' "

done

三、批量执行shell脚本跑hive数据#! /bin/sh

#按照 日期范围进行批量执行hive脚本

tablename=$1

date=`date -d "+0 day $2" +%Y%m%d`

enddate=`date -d "+0 day $3" +%Y%m%d`

echo "date=$date"

echo "enddate=$enddate"

while [[ $date < $enddate ]]

do

echo $date

echo "using sourcing"

#执行引用shell脚本文件

source ./$tablename.sh $date

echo "done...."$date

date=`date -d "+1 day $date" +%Y%m%d`

done

月初执行脚本#!/bin/sh

tablename=$1

date=`date -d "+0 day $2" +%Y%m%d`

enddate=`date -d "+0 day $3" +%Y%m%d`

echo "date=$date"

echo "enddate=$enddate"

while [[ $date < $enddate ]]

do

echo $date

day=`date -d "0 day ago $date" +%d`

if [ $day = 01 ];

then

echo "月初开始执行"

echo "using sourcing"

source ./$tablename.sh $date

echo "done...."$date

else

echo "不是月初不执行!!!"

fi

date=`date -d "+1 day $date" +%Y%m%d`

done

PS: hive动态分区处理表数据需要设置参数set hive.exec.dynamic.partition=true; 设置是否可动态分区

set hive.exec.dynamic.partition.mode=nonstrict; 设置为非严格模式

set hive.exec.max.dynamic.partitions=1000; 处理的最大动态分区数

set hive.exec.max.dynamic.partitions.pernode=100; 在每一个mapper/reducer节点允许创建的最大分区数

hive动态分区shell_hive-shell批量操作分区文件相关推荐

  1. hive动态分区shell_Hive/Shell 创建Hive 库 ,表脚本,Hive 动态增加分区脚本

    最近工作中使用到了Hive,  并对Hive 的数据库,表完成创建. 创建的表为分区表,也涉及到了分区表 的按天动态增加分区. 代码组织结构: 创建数据库: create_dmp.hql --dmp ...

  2. hive动态分区shell_Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  3. hive 动态分区实现 (hive-1.1.0)

    hive 动态分区实现 (hive-1.1.0) 笔者使用的hive版本是hive-1.1.0 hive-1.1.0动态分区的默认实现是只有map没有reduce,通过执行计划就可以看出来.(执行计划 ...

  4. Hive 动态分区入门

    什么是动态分区? 分区的值由数据来确定,而不是说load数据的时候自行制定 如何动态分区? 前提条件 -- 属性说明: hive.exec.dynamic.partition=true:是否支持动态分 ...

  5. Hive动态分区和分桶

    Hive动态分区和分桶 1. Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 2.hive的动态分区配置 3.hive动态分区语法 2.Hive分桶 1.Hive分桶的介绍 ...

  6. hive动态分区报错

    HIVE动态分区,由于动态分区个数过多,map端内存溢出,报错. containerID=container_e86_1608865192015_2953765_01_000002] is runni ...

  7. Hive实践1之【静态分区及动态分区基本操作】

    Hive分区 引言 1.静态分区 1.1 静态分区--单分区 1.2 静态分区--多分区 2.动态分区 2.1 动态分区--单分区 2.2 动态分区--多分区 3.静态+动态分区 4.动态分区优化 引 ...

  8. hive学习(5)--- Partitions分区的使用(包括动态分区)

    下面这个文章很好的讲解了Partitions的使用方法 http://www.aahyhaa.com/archives/316 其他参考文章: http://p-x1984.iteye.com/blo ...

  9. HIVE 动态分区与静态分区

    HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中.比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_fi ...

最新文章

  1. nodejs 打印返回的json
  2. 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题
  3. Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
  4. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 9丨平均工资:部门与公司比较【难度困难】
  5. node 后台文章编辑器_我如何使用Node从报纸网站上刮掉7000篇文章
  6. “send“ and “transfer“ are only available for objects of type “address payable“, not “address
  7. 手rm-linux联网后自动dhcp,Linux操作系统下DHCP基础配置
  8. 浅谈对称加密和非对称加密
  9. DX11编程(一):DX和Effect的基本配置和属性表配置
  10. Excel 实用小技巧:如何将两列的数据合并到一起
  11. CHM 打开时提示 已取消到该网页的导航
  12. 创意简约土木黑灰配色PPT-朴尔PPT
  13. 王小锤学Java:retainAll函数那点儿事
  14. 如何让程序运行后不谈程序兼容性助手
  15. 使用JavaFX完成刽子手游戏
  16. 10个超赞的HTML5框架加快Web开发
  17. 在伯克利学计算机,2019加州大学伯克利分校计算机专业申请要求
  18. android 实现视频播放功能,android开发之简单视频播放器(VideoView)
  19. SE5004L-R功率探测器SKYWORKS 封装QFN
  20. 怎么用计算机上的打印设备打印,如何在电脑上添加打印机并使用

热门文章

  1. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序
  2. spring cloud Eureka 之配置信息
  3. Jsp+Servlet+Mysql实现的二手物品在线商城源码
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园二手市场系统
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
  6. pip和conda的区别【转载】
  7. html中引入调用另一个公用html模板文件的方法
  8. 使用EL表达式,显示Action中的数据
  9. init.d目录理解
  10. 说说WeakReference弱引用