gpt4 book ai didi

shell - 使用 shell 脚本获取最近 5 分钟内在 hadoop 中创建的文件

转载 作者:可可西里 更新时间:2023-11-01 14:27:32 28 4
gpt4 key购买 nike

我在 HDFS 中有如下文件:

drwxrwx---   - root supergroup          0 2016-08-19 06:21 /tmp/logs/root/logs/application_1464962104018_1639064
drwxrwx--- - root supergroup 0 2016-08-19 06:21 /tmp/logs/root/logs/application_1464962104018_1639065

现在/tmp/logs/root/logs/目录会不断的获取新的文件在里面。我想获取最近五分钟内创建的文件,同时考虑到当前时间。然后我需要将这些文件复制到我的本地机器中。

最佳答案

这个怎么样:

hdfs dfs -ls /tmp | tr -s " " | cut -d' ' -f6-8 | grep "^[0-9]" | awk 'BEGIN{ MIN=5; LAST=60*MIN; "date +%s" | getline NOW } { cmd="date -d'\''"$1" "$2"'\'' +%s"; cmd | getline WHEN; DIFF=NOW-WHEN; if(DIFF < LAST){ print $3 }}'

解释:

列出所有文件:

hdfs dfs -ls /tmp

替换多余的空格:

tr -s " "

获取所需的列:

cut -d' ' -f6-8

删除不需要的行:

grep "^[0-9]"

使用 awk 处理:

awk

初始化DIFF持续时间和当前时间:

MIN=5; LAST=60*MIN; "date +%s" | getline NOW

创建命令以获取 HDFS 上文件时间戳的纪元值:

cmd="date -d'\''"$1" "$2"'\'' +%s";

执行命令获取HDFS文件的epoch值:

cmd | getline WHEN;

获取时差:

DIFF=NOW-WHEN;

根据差异打印输出:

if(DIFF < LAST){ print $3 }

您只需要根据您的要求(此处为 5 分钟)更改 MIN 的变量值。

关于shell - 使用 shell 脚本获取最近 5 分钟内在 hadoop 中创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032539/

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