如何在Databricks Filestore中筛选3月15日上传的最新文件
解决Databricks中筛选特定日期(3月15日)Parquet文件的问题
问题原因
%sh find ... -mtime -1 仅会匹配过去24小时内修改的文件,若你执行命令的时间距离3月15日已超过24小时,自然无法找到目标文件。要精准筛选3月15日的文件,需要用特定日期范围的匹配逻辑。
分步解决方法
先确认文件的实际修改日期
先统一格式查看目录下所有Parquet文件的日期,避免视觉误差:%sh ls -l --time-style=+%Y-%m-%d /dbfs/mnt/sgi/report/descriptive/granular_market_size/*.parquet精准筛选3月15日的Parquet文件
使用-newermt参数(Databricks的Shell环境默认支持)指定时间范围,匹配202X年3月15日当天修改的文件:%sh find /dbfs/mnt/sgi/report/descriptive/granular_market_size \ -type f \ -name "*.parquet" \ -newermt "202X-03-15" \ ! -newermt "202X-03-16"(将
202X替换为实际年份)若系统不支持
-newermt,可以用临时文件标记时间范围:%sh touch -t 202X03150000 /tmp/start_mar15 %sh touch -t 202X03160000 /tmp/end_mar15 %sh find /dbfs/mnt/sgi/report/descriptive/granular_market_size \ -type f \ -name "*.parquet" \ -newer /tmp/start_mar15 \ ! -newer /tmp/end_mar15将筛选出的文件移动到子文件夹
先创建目标子文件夹,再批量移动文件:# 创建子文件夹(不存在则创建) %sh mkdir -p /dbfs/mnt/sgi/report/descriptive/granular_market_size/mar15_files # 移动文件 %sh find /dbfs/mnt/sgi/report/descriptive/granular_market_size \ -type f \ -name "*.parquet" \ -newermt "202X-03-15" \ ! -newermt "202X-03-16" \ -exec mv {} /dbfs/mnt/sgi/report/descriptive/granular_market_size/mar15_files/ \;若文件数量较多,用
xargs效率更高:%sh find ... | xargs mv -t /dbfs/mnt/sgi/report/descriptive/granular_market_size/mar15_files/
内容的提问来源于stack exchange,提问作者Anubhav
相关产品推荐
相关产品推荐

