gpt4 book ai didi

ruby - 在 hadoop 上删除早于 x 天的文件

转载 作者:可可西里 更新时间:2023-11-01 14:52:30 24 4
gpt4 key购买 nike

我正在构建一个 bash 脚本,用于删除指定目录中早于 x 天的日志文件。如您所知,“find”在 hadoop fs 上不可用,所以我在 ruby​​ 中找到了一种巧妙的方法,并且想知道是否有一种方法可以在 bash 中实现这一点。

In Ruby:

#!/usr/bin/env ruby 
require "date"

five_days_ago = Date.parse(Time.now.to_s) - 5
IO.popen("hadoop fs -lsr /tmp").each_line do |line|
permissions,replication,user,group,size,mod_date,mod_time,path = *line.split(/\s+/)
if (mod_date)
if Date.parse(mod_date.to_s) < five_days_ago
puts line
if permissions.split('')[0] == 'd'
puts "deleting #{path}"
`hadoop fs -rmr -skipTrash #{path}`
dirname = path
next
end
next if path.start_with? dirname
`hadoop fs -rm -skipTrash #{path}`
end
end
end

最佳答案

这是我在bash中使用的,你可以试试:

例如grep 所有 8 个月前的文件。根据需要更改 grep 正则表达式模式:

hadoop fs -ls -R <location> | grep '.*2016-[0-8].*' | awk '{print $8}'

删除文件:

hadoop fs -rm -r `hadoop fs -ls -R <location> | grep '.*2016-[0-8].*' | awk '{print $8}'`

关于ruby - 在 hadoop 上删除早于 x 天的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com