如何将数据定时传到hdfs中?用一个简单的脚本来实现

假设日志文件:

access_2024_06_03.log

HDFS中的目录格式为:

20240603

总共分为五个步骤

第一步:我们需要获取到昨天的日志文件的名称

#获取昨天日期
yesterday=`date +%Y_%m_%d --date="1 days ago"`
#拼接日志文件的路径信息
logPath=/data/log/access_${yesterday}.log

日志文件我们在/data/log/目录里创建

第二步:在HDFS上面使用昨天的日期创建目录

#将日期字符串中的_去掉,并且拼接成hdfs路径
hdfsPath=/log/${yesterday//_/}
#在hdfs上创建目录
hdfs dfs -mkdir -p ${hdfsPath}

第三步:将昨天的日志文件上传到刚创建的HDFS目录中

hdfs dfs -put ${logPath} ${hdfsPath}

第四步:要考虑脚本重跑,补数据的情况

#这里我们尝试从命令行参数中获取昨天日期
yesterday=$1
#如果命令行参数为空字符串
if["$yesterday"=" "]
then
#如果为空,则使用date命令生成前一天的日期
	yesterday=`date+%Y_%m_%d --date="1 days ago"`
fi

第五步:配置crontab任务

在每天的凌晨1点自动上传

我设置的是每天一点执行

完整脚本如下

#获取昨天日期
yesterday=$1
if[" $yesterday"="" ]
then
	yesterday=`date +%Y_%m_%d --date="1 days ago"`
fi
#拼接日志文件路径信息
logPath=/data/log/access_${yesterday}.log
#将日期字符串中的_去掉,并且拼接成hdfs路径
hdfsPath=/log/${yesterday//_/}
#在hdfs上面创建目录
hdfs dfs -mkdir -p ${hdfsPath}
#将 数据上传到hdfs的指定目录
hdfs dfs -put ${logPath} ${hdfsPath}

运行效果如下:

上传指定日期的数据到hdfs中

全部评论

相关推荐

吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务