hive动态分区shell_hive-shell批量操作分区文件
使用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批量操作分区文件相关推荐
- hive动态分区shell_Hive/Shell 创建Hive 库 ,表脚本,Hive 动态增加分区脚本
最近工作中使用到了Hive, 并对Hive 的数据库,表完成创建. 创建的表为分区表,也涉及到了分区表 的按天动态增加分区. 代码组织结构: 创建数据库: create_dmp.hql --dmp ...
- hive动态分区shell_Hive动态分区 参数配置及语法
Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...
- hive 动态分区实现 (hive-1.1.0)
hive 动态分区实现 (hive-1.1.0) 笔者使用的hive版本是hive-1.1.0 hive-1.1.0动态分区的默认实现是只有map没有reduce,通过执行计划就可以看出来.(执行计划 ...
- Hive 动态分区入门
什么是动态分区? 分区的值由数据来确定,而不是说load数据的时候自行制定 如何动态分区? 前提条件 -- 属性说明: hive.exec.dynamic.partition=true:是否支持动态分 ...
- Hive动态分区和分桶
Hive动态分区和分桶 1. Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 2.hive的动态分区配置 3.hive动态分区语法 2.Hive分桶 1.Hive分桶的介绍 ...
- hive动态分区报错
HIVE动态分区,由于动态分区个数过多,map端内存溢出,报错. containerID=container_e86_1608865192015_2953765_01_000002] is runni ...
- Hive实践1之【静态分区及动态分区基本操作】
Hive分区 引言 1.静态分区 1.1 静态分区--单分区 1.2 静态分区--多分区 2.动态分区 2.1 动态分区--单分区 2.2 动态分区--多分区 3.静态+动态分区 4.动态分区优化 引 ...
- hive学习(5)--- Partitions分区的使用(包括动态分区)
下面这个文章很好的讲解了Partitions的使用方法 http://www.aahyhaa.com/archives/316 其他参考文章: http://p-x1984.iteye.com/blo ...
- HIVE 动态分区与静态分区
HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中.比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_fi ...
最新文章
- nodejs 打印返回的json
- 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题
- Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 9丨平均工资:部门与公司比较【难度困难】
- node 后台文章编辑器_我如何使用Node从报纸网站上刮掉7000篇文章
- “send“ and “transfer“ are only available for objects of type “address payable“, not “address
- 手rm-linux联网后自动dhcp,Linux操作系统下DHCP基础配置
- 浅谈对称加密和非对称加密
- DX11编程(一):DX和Effect的基本配置和属性表配置
- Excel 实用小技巧:如何将两列的数据合并到一起
- CHM 打开时提示 已取消到该网页的导航
- 创意简约土木黑灰配色PPT-朴尔PPT
- 王小锤学Java:retainAll函数那点儿事
- 如何让程序运行后不谈程序兼容性助手
- 使用JavaFX完成刽子手游戏
- 10个超赞的HTML5框架加快Web开发
- 在伯克利学计算机,2019加州大学伯克利分校计算机专业申请要求
- android 实现视频播放功能,android开发之简单视频播放器(VideoView)
- SE5004L-R功率探测器SKYWORKS 封装QFN
- 怎么用计算机上的打印设备打印,如何在电脑上添加打印机并使用
热门文章
- 希尔排序python 简书_数据结构_排序_直接插入+希尔排序
- spring cloud Eureka 之配置信息
- Jsp+Servlet+Mysql实现的二手物品在线商城源码
- 基于JAVA+SpringMVC+Mybatis+MYSQL的校园二手市场系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
- pip和conda的区别【转载】
- html中引入调用另一个公用html模板文件的方法
- 使用EL表达式,显示Action中的数据
- init.d目录理解
- 说说WeakReference弱引用