[Linux]结合awk删除hdfs指定日期前的数据

业务背景

约定五天前的HDFS数据为过期版本数据,写一个脚本自动删除过期版本数据

$ hadoop fs -ls /user/pms/workspace/ouyangyewei/data
Found 9 items
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-01
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-02
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-03
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-04
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-05
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-06
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-07
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-08
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-09

脚本实现

# ---------------------------------------------------------
#
# 删除历史版本(五天前的为过期版本数据)
#
# ---------------------------------------------------------

old_version=$(hadoop fs -ls /user/pms/workspace/ouyangyewei/data | awk ‘BEGIN{ five_days_ago=strftime("%F", systime()-5*24*3600) }{ split($8,arr,"/"); if(arr[7]<five_days_ago){printf "%s\n", $8} }‘)
arr=(${old_version// / })
for version in ${arr[@]}
do
    hadoop fs -rmr $version
done

执行以后

$ hadoop fs -ls /user/pms/workspace/ouyangyewei/data
Found 4 items
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-06
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-07
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-08
drwxr-xr-x   - pms pms          0 2015-08-11 17:03 /user/pms/workspace/ouyangyewei/data/2015-08-09

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 10:51:00

[Linux]结合awk删除hdfs指定日期前的数据的相关文章

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是指备份执行时当天的日期),最后只保留最近7天的备份 2.上传/home/osyunweibak里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份. 3.FTP服务器:192.168.21.139 端口:21 账号:osyunwei 密码:123456 osyunweibak为备份文件存放目

跨库备份指定日期前数据表,然后从原表删除

  public bool BackupAA() { int temp = 0; int tempdel = 0; string sql = "INSERT INTO [WMSBAK].[dbo].[AACopy] SELECT * FROM [TestDB].[dbo].[AA] WHERE AddDate <= DATEADD( d ,-45,GETDATE())"; try { temp = dbhelper.ExcuteNonequery(sql); } catch (E

python删除指定日期前的备份文件

这个脚本还有待完善,没有加入迭代子目录,后期完善. #!/bin/env python #coding=utf-8 import time,datetime,os,sys dir='/usr/local/src' #被删除文件写入日志文件 logdir='/var/log' logfile=os.path.join(logdir,'delete.log') # 定义时间格式 time_format = "%a %b %d %H:%M:%S %Y" # 函数返回"2015-02

Linux中定时删除超过指定大小的文件夹

背景: 开发环境总是动不动就没有空间了, 大部分都是debug日志.所以有必要在日志很疯狂的时候,删除不必要的日志. 思路:一. 书写删除日志文件脚本: 定时任务执行.  但是有时候的日志是需要保存用来查询的.所以不完美. 二. 删除脚本保存,定时任务去查询系统空间是否到达临界值,到达则删除,否则不进行任何操作. 日志删除脚本: #!/bin/sh date "+%Y-%m-%d %H:%M:%S" echo ==========before rm========== df -h ec

[Linux]结合awk列举大于指定容量大小所有文件目录

业务背景 /home/pms目录是工作目录,现在该目录占用硬盘空间过大,需要清理,现在需要列举该目录中所有大于200MB的子文件目录,以及该子文件目录的占用空间 脚本实现 du -h --max-depth=10 /home/pms/* | awk '{ if($1 ~ /M/){split($1, arr, "M")}; if(($1 ~ /G/) || ($1 ~ /M/ && arr[1]>200)) {printf "%-10s %s\n&quo

删除数据库几天前的数据

删除3天前数据 delete from liuyan where datediff(curdate(), time) > 3 DATEDIFF() 函数返回两个日期之间的天数. 例子: SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate返回1 SELECT DATEDIFF('2008-12-29','2008-12-30') AS DiffDate返回-1 CURDATE() 函数返回当前的日期. SELECT NOW(),CURDAT

使用python获取股票指定日期交易代码数据

证券宝www.baostock.com是一个免费.开源的证券数据平台. 提供大量准确.完整的证券历史行情数据.上市公司财务数据.实时证券行情推送服务等.        通过python API获取证券数据信息,满足量化交易投资者.数量金融爱好者.计量经济从业者数据需求. 本次介绍 接口:证券代码查询:query_all_stock() (以下代码来自官网,侵删) 方法说明:查询证券代码及股票交易状态信息信息,可以通过参数'某交易日'获取数据(包括:A股.指数),提供2014至今数据. 返回类型:

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 [sql] view plaincopy <span style="font-family: 'Microsoft YaHei'; font-size: 14px;">MySQL定时任务event</span> 由于一些业务需求,我们可能需要定时清除数据库一些废弃的数据

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令