hive数据文件备份
#-*- coding: utf-8 -*-
import os
import sys
import time
import datetime
import pymysql
from dateutil.parser import parse
#没有传参默认是昨天
if len(sys.argv) < 2 :vdate = datetime.datetime.strftime(datetime.datetime.today() + datetime.timedelta(days=-1), '%Y%m%d')
else:vdate = sys.argv[1]print('备份数据日期{vdate}'.format(vdate=vdate))#元数据库
mysql_conn = pymysql.connect(host='127.0.0.1',port=3306,user='hive',passwd='123456',db='hive',charset='utf8')
cursor = mysql_conn.cursor()
#从底层开始备份
db_sql = u'''select name from hive.DBS order by case when name = 'ods' then 100when name = 'dwd' then 99when name = 'dws' then 98when name = 'ads' then 97else 1 end desc '''
cursor.execute(db_sql)
db_list = cursor.fetchall()
dir = 'mkdir -p /data10/hive_data_bak/{vdate}'.format(vdate=vdate)
os.system(dir)for db in db_list:if db[0] not in ('tmp','testdb'):dir = 'mkdir -p /data10/hive_data_bak/{vdate}/{db}'.format(vdate = vdate,db = db[0])os.system(dir)#每个库每个表的每个分区或者全表,只适合按天为第一级分区的表,根据自己的需求来tab_sql = u'''select distinct c.name,a.tbl_name,b.part_name,db_location_uri,case when b.part_name is not null then concat(replace(db_location_uri,'hdfs://nameservice1',''),'/',a.tbl_name,'/',b.part_name)else concat(replace(db_location_uri,'hdfs://nameservice1',''),'/',a.tbl_name) end as db_locationfrom hive.TBLS a left join hive.PARTITIONS b on a.tbl_id = b.tbl_id inner join hive.DBS c on a.db_id = c.db_idwhere c.name = '{db_name}' and (b.part_name like '%{vdate}%' or b.part_name is null) #特殊表and a.tbl_name not like ('%_tmp_%') and a.tbl_name not like ('%tmp_%') and a.tbl_name not like ('%_tmp%') and a.tbl_name not like ('%bak')#天表and (right(a.tbl_name,8) = '{vdate}' or (right(a.tbl_name,8) REGEXP '[^0-9.]')<>0)'''.format(vdate = vdate,db_name = db[0])#print(tab_sql)#列出每个库的每个表cursor.execute(tab_sql)tab_list = cursor.fetchall()for tab in tab_list:#4点到9点不跑数,影响业务while True:if datetime.datetime.today().hour < 4 or datetime.datetime.today().hour > 9:breakelse:print('4点到9点不跑数,正在休眠!!!!')time.sleep(600)dir = 'mkdir -p /data10/hive_data_bak/{vdate}/{db}/{tab}'.format(vdate=vdate,db=db[0],tab=tab[1])os.system(dir)source = tab[4]if tab[2] == None:source = tab[4] + '/*'target = '/data10/hive_data_bak/{vdate}/{db}/{tab}/'.format(vdate=vdate,db=db[0],tab=tab[1])get_dfs = 'hadoop dfs -get {source} {target}'.format(source=source,target=target)print(datetime.datetime.now())print('正在备份{source}'.format(source=tab[4]))print(get_dfs)os.system(get_dfs)
print(datetime.datetime.now())# 关闭连接
cursor.close()
mysql_conn.close()print('完成')
hive数据文件备份相关推荐
- hive数据导入导出
Hive数据导入导出的几种方式 一,Hive数据导入的几种方式 首先列出讲述下面几种导入方式的数据和hive表. 导入: 本地文件导入到Hive表: Hive表导入到Hive表; HDFS文件导入到H ...
- 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?
原标题:如何轻松将数据文件备份到电子邮箱? 随着各大免费邮箱服务商的激烈竞争,邮箱的空间也越来越大,利用邮箱空间来进行文件备份,对于个人来说的确是一种很好的选择. 它的好处,一是利用了免费的空间,不需 ...
- 用备份控制文件做不完全恢复下的完全恢复(数据文件备份旧--新建表空间--控制文件备份次新--日志归档文件新)...
为什么会使用备份的控制文件? 实际工作中主要有两种情况: 第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件). 第二种:当前控制 ...
- 使用Ranger对Hive数据进行脱敏
Ranger支持对Hive数据的脱敏处理(Data Masking),它对select的返回结果进行脱敏处理,对用户屏蔽敏感信息. 备注: 该功能针对HiveServer2的场景(如beeline/j ...
- Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!...
转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop ...
- Hive数据导入Elasticsearch
Elasticsearch Jar包准备 所有节点导入elasticsearch-hadoop-5.5.1.jar /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12 ...
- python应用中调用spark_在python中使用pyspark读写Hive数据操作
1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语 ...
- hive向mysql导数据_导入Hive数据导MySQL
导入Hive数据到MySQL 1. UDF 使用UDF比较方便,代码在http://svn.apache.org/repos/asf/hive/trunk/contrib/src/java/org/a ...
- 把hive数据导出至mysql
##################环境########################################### 软件 版本 备注 Ubuntu 19.10 sqoop 1.4.7 ...
最新文章
- 【转载】C#编码标准━━项目设置和项目结构
- 7:MD5、圆形图片、动态换肤
- python gzipped source tarball,下载及安装Python详细步骤
- 1、excel常用技能(数据分列、数据快速浏览、转置、选择性粘贴运算、绘制对角线、单元格内换行、插入注解文字或图片)
- 乐视云没创意,还拿“免费”说事儿
- 【Python基础】在pandas中使用pipe()提升代码可读性
- apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
- 谷歌 colab_如何在Google Colab上使用熊猫分析
- Transactional cannot be resolved to a type
- c语言中字符 12是多少,c语言中字符串的讲解(DOC可编).doc
- qps多少才算高并发_AGV小车价格多少才算合适?
- H5热门游戏模板案例解读:贪吃蛇玩法的新高度
- JumpServer页面访问502、504问题记录
- GNURadio3.9.4创建OOT模块实例
- [bzoj3197][SDOI2013]assassin
- 第五章 数组Ivor Horton
- PhpSpreadsheet中文文档 | 基础Spreadsheet开发使用示例
- 读《薛兆丰经济学讲义》后感
- html5如何快速选择工具使用技巧,PS新手抠图必掌握!超有用的快速选择工具
- GitBook制作电子书使用教程
热门文章
- html布局间距,CSS Grid布局:列和间距
- Flash ActionScript3 一种按照真实占位宽度截短字符串的方法
- 离职后心生不满,西安某医院运维“炫技性报复”破坏诊疗系统,被依法刑拘...
- ES6 标签模板(Tagged templates)
- 南华大学计算机有调剂名单吗,南华大学调剂公告
- 优麒麟mysql_如何在优麒麟Ubuntu Kylin下安装Numix主题和图标
- Matlab二维线图对数坐标及与hold on结合的问题
- 【阅读器】caj格式及其转换为PDF格式
- 浪漫约定的守护者——微软最有价值专家余勇
- 前端调用手机摄像头权限进行扫码解析