#-*- 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数据文件备份相关推荐

  1. hive数据导入导出

    Hive数据导入导出的几种方式 一,Hive数据导入的几种方式 首先列出讲述下面几种导入方式的数据和hive表. 导入: 本地文件导入到Hive表: Hive表导入到Hive表; HDFS文件导入到H ...

  2. 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?

    原标题:如何轻松将数据文件备份到电子邮箱? 随着各大免费邮箱服务商的激烈竞争,邮箱的空间也越来越大,利用邮箱空间来进行文件备份,对于个人来说的确是一种很好的选择. 它的好处,一是利用了免费的空间,不需 ...

  3. 用备份控制文件做不完全恢复下的完全恢复(数据文件备份旧--新建表空间--控制文件备份次新--日志归档文件新)...

    为什么会使用备份的控制文件? 实际工作中主要有两种情况: 第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件). 第二种:当前控制 ...

  4. 使用Ranger对Hive数据进行脱敏

    Ranger支持对Hive数据的脱敏处理(Data Masking),它对select的返回结果进行脱敏处理,对用户屏蔽敏感信息. 备注: 该功能针对HiveServer2的场景(如beeline/j ...

  5. Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!...

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop ...

  6. Hive数据导入Elasticsearch

    Elasticsearch Jar包准备 所有节点导入elasticsearch-hadoop-5.5.1.jar /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12 ...

  7. python应用中调用spark_在python中使用pyspark读写Hive数据操作

    1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语 ...

  8. hive向mysql导数据_导入Hive数据导MySQL

    导入Hive数据到MySQL 1. UDF 使用UDF比较方便,代码在http://svn.apache.org/repos/asf/hive/trunk/contrib/src/java/org/a ...

  9. 把hive数据导出至mysql

    ##################环境########################################### 软件 版本 备注 Ubuntu 19.10   sqoop 1.4.7 ...

最新文章

  1. 【转载】C#编码标准━━项目设置和项目结构
  2. 7:MD5、圆形图片、动态换肤
  3. python gzipped source tarball,下载及安装Python详细步骤
  4. 1、excel常用技能(数据分列、数据快速浏览、转置、选择性粘贴运算、绘制对角线、单元格内换行、插入注解文字或图片)
  5. 乐视云没创意,还拿“免费”说事儿
  6. 【Python基础】在pandas中使用pipe()提升代码可读性
  7. apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
  8. 谷歌 colab_如何在Google Colab上使用熊猫分析
  9. Transactional cannot be resolved to a type
  10. c语言中字符 12是多少,c语言中字符串的讲解(DOC可编).doc
  11. qps多少才算高并发_AGV小车价格多少才算合适?
  12. H5热门游戏模板案例解读:贪吃蛇玩法的新高度
  13. JumpServer页面访问502、504问题记录
  14. GNURadio3.9.4创建OOT模块实例
  15. [bzoj3197][SDOI2013]assassin
  16. 第五章 数组Ivor Horton
  17. PhpSpreadsheet中文文档 | 基础Spreadsheet开发使用示例
  18. 读《薛兆丰经济学讲义》后感
  19. html5如何快速选择工具使用技巧,PS新手抠图必掌握!超有用的快速选择工具
  20. GitBook制作电子书使用教程

热门文章

  1. html布局间距,CSS Grid布局:列和间距
  2. Flash ActionScript3 一种按照真实占位宽度截短字符串的方法
  3. 离职后心生不满,西安某医院运维“炫技性报复”破坏诊疗系统,被依法刑拘...
  4. ES6 标签模板(Tagged templates)
  5. 南华大学计算机有调剂名单吗,南华大学调剂公告
  6. 优麒麟mysql_如何在优麒麟Ubuntu Kylin下安装Numix主题和图标
  7. Matlab二维线图对数坐标及与hold on结合的问题
  8. 【阅读器】caj格式及其转换为PDF格式
  9. 浪漫约定的守护者——微软最有价值专家余勇
  10. 前端调用手机摄像头权限进行扫码解析