使用shell脚本依据分区信息分批次的下载hive表格数据
今天的业务场景大概是这样的,我想把hive表格下载到本地文件系统,然后把这个文件传送到另一个服务器上。
但是这个业务场景一个核心问题就是说我本地机器内存有限,hive表格大概是70G,我是不可能全部下载到本地的。这个时候我想到的一个方法就是依靠分区实现这个目的。
首先这个hive表格的内容大概是这样的-temp_zida_uids_bowen_content_new_zida:
uid,mid,content,date
是没有分区信息。
我首先要做的就是将这个表格改为具有分区。这种情况我们使用的方法就是将这个原始hive表格加上动态分区。对这方面我参考的就是Hive如何根据表中某个字段动态分区和Hive分区(静态分区+动态分区)还有hive分区表详细介绍
vim transform_fenqu.sh
大致代码就是这样:
function create(){
cat <<EOF
CREATE TABLE IF NOT EXISTS temp_zida_bowen_fenqu_now(uid string,mid string,content string)
partitioned by (date string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/dw_ext/weibo_bigdata_ugrowth/mds/temp_zida_bowen_fenqu_now';
EOF
}
function set(){
cat <<EOF
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
insert into table temp_zida_bowen_fenqu_now partition (date) select * from temp_zida_uids_bowen_content_new_zida;
EOF
}
hive -e "`create`"
echo "1"
hive -e "`set`"
echo '2'
这样我们的表格就具有动态分区,我们可以写一个代码检查一下能不能成功
hive -e "show partitions temp_zida_bowen_fenqu_now"|sort -r
hive -e "show partitions temp_zida_bowen_fenqu_now"|sort -r|sed -n '1p'|cut -b 4-11
然后接下来我们要做的就是根据分区下载每个分区对应的数据,然后传送到另一个服务器上,大概的代码如下:
#! /bin/bash
dt_ods_tblog_content=`hive -e "show partitions ods_tblog_content"|sort -r|sed -n '1p'|cut -b 4-11`
date_e=`date -d"1 day ago" +%Y%m%d`
date_90ago=`date -d"$date_e -89 day" +"%Y%m%d"`
dt_ods_tblog_content_90days_ago=$date_90ago
first=$date_90ago
second=$dt_ods_tblog_content
while [ "$first" -le "$second" ]
do
hive -e "select uid,mid,content from temp_zida_bowen_fenqu_now where date=$first" >./data/$first
rsync -av ./data/$first 172.16.142.33::rsyncpath/data_bowen
rm ./data/$first
echo $first
let first=`date -d "-1 days ago ${first}" +%Y%m%d`
done
在这个shell代码中涉及到一个日期循环的语句,我是参考的这里的代码linux shell中实现循环日期的实例代码-具体看的是这篇博文的下半部分的代码
使用shell脚本依据分区信息分批次的下载hive表格数据的更多相关文章
- SHELL脚本实现分区
写一个脚本(前提:请为虚拟机新增一块硬盘,架设它为/dev/sdb),为指定的硬盘创建分区 1,列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本:如果用户选择错误,就让用户重新选择 2 ...
- Linux下基于shell脚本实现学生信息管理系统
#该管理系统是参考两位博主(时间有点远了,我忘了,请博主看到后联系我)后自行修改添加的.登录过程还有很多不完善,我就抛砖引玉啦. 废话不多,直接上码! #!/bin/bash# 学生管理系统# @ve ...
- python在linux调用shell脚本实时打印输出信息并对信息进行判断
核心代码 def run(command): #实时获取打印的命令 process = Popen(command, stdout=PIPE, shell=True) while True: line ...
- shell脚本 系统状态信息查看
一.简介 源码地址 日期:2018/6/23 介绍:显示简单的系统信息 效果图: 二.使用 适用:centos6+,ubuntu12+ 语言:中文 注意:无 下载 wget https://raw.g ...
- 使用linux 的shell脚本进行sftp文件上传与下载
一.批量上传: #!/bin/bash #SFTP配置信息 #用户名 USER=root #密码 PASSWORD=5EYS40T04BMF #待上传文件根目录 SRCDIR=/u02/dab/sft ...
- fdisk分区硬盘并shell脚本自动化
最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结. 如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将 ...
- 初阶项目一-集成一套linux系统:红帽系统,LVM分区,Apache服务,MySQL服务,数据定时备份脚本
目录 一.项目目标 二.实施工具 三.项目实施计划 四.安装rhel7.5操作系统 4.1 配置虚拟机 4.2 安装操作系统 4.3 系统配置 4.3.1 网络配置 4.3.2 修改主机名 4.3.3 ...
- shell 脚本加密
日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件. 主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加 ...
- shell脚本基础编写
shell脚本的格式 名称:Shell 脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将 .sh 后缀加上,以表示是一个脚本文件. shell 脚本中一般会出现三种不同的元素: 第一行的脚 ...
随机推荐
- Ajax异步封装
//自己封装了一个异步方法. //第一个参数:GET或者是POST,二个参数:请求的url地址, //第三个:是否异步第四个:往后台发送的Post的数据,最后一个后台返回数据之后,处理数据的回调函数. ...
- Python异常处理及元类
一.异常处理 异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会跑出来,程序的执行也随之终止,也就是说异常就是一个事件,该事件会在程序执行过程中发生,影响 ...
- Could not find or load main class Hello
在 linux 下写了一个非常简单的 Hello World 程序,编译正常,运行报错:Error: Could not find or load main class Hello 这是由于 CLAS ...
- oracle 递归查询(来源于网络)
比如 a b a c a e b b1 b b2 c c1 e e1 e e3 d d1 指定parent=a,选出 a b a c a e b ...
- SharePoint 2010 列表查阅项栏的formfield控件对象取值
开发的时候想当然的认为主表解析出来就是一个dropdownlist,可是在大数据测试的时候,发现有情况. 首先创建一个子列表:DetailList,并添加19条数据: 创建主列表:MainList,并 ...
- mongoDB基础知识(一)
mongoDB是一个基于分布式文件存储的数据库,介于关系型数据库和非关系型数据库之间,在非关系型数据库中功能最丰富, 最像关系型数据库.数据结构松散,类似于json的bson格式,可以存储比较复杂的数 ...
- Spark远程调试函数
Spark远程调试函数 1.sendInfo 该函数用于分布式程序的调试,非常方便,在spark的rdd操作中嵌入sendInfo,启动nc服务器后,可以收集到所有需要的运行时信息,该函数可以捕获ho ...
- HCNA配置console线路密码password认证
1.华为设备配置主机名<Huawei>system <Huawei>system-view Enter system view, return user view wit ...
- Multi-modal Sentence Summarization with Modality Attention and Image Filtering 论文笔记
文章已同步更新在https://ldzhangyx.github.io/,欢迎访问评论. 五个月没写博客了,不熟悉我的人大概以为我挂了…… 总之呢这段时间还是成长了很多,在加拿大实习的两个多月来 ...
- [原创][Windows] Win7安装visual c++ 2015 redistributable x64失败
在win7中安装visual c++ 2015 redistributable x64 时会卡住,原因是visual c++ 2015 redistributable x64 需要KB2999226, ...