You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历HDFS目录下每个输入文件并为每个文件单独生成对应输出文件

问题原因分析
  • 你写的for循环已经成功遍历${hdfs_input}目录下的每个文件并赋值给变量i,但循环内部的hdfs dfs -cp命令依然使用了通配符${hdfs_input}*,每次循环都会把目录下所有文件都拷贝一次,完全没有用到循环变量,所以最终只会得到合并的输出结果。
  • 另外代码里用到的${hdfs_path}变量没有提前定义,执行时会报错。
修正后的代码
#!/bin/ksh
# 定义HDFS输入路径
hdfs_input='inputfilepath/'
# 定义输出路径,可根据实际需求修改
hdfs_output_path='outputfilepath/new_dir/'

# 遍历输入目录下的每个文件
for file in "${hdfs_input}"*
do
    # 提取当前遍历文件的文件名(去掉路径前缀)
    filename=$(basename "${file}")
    # 单独拷贝当前文件到输出目录,可替换为你自己的代码提取逻辑
    hdfs dfs -cp "${file}"  "${hdfs_output_path}/${filename}"
    # 此处添加针对单个文件的处理逻辑,用${file}指代当前处理的单个文件即可
done
补充说明
  • 如果不需要保留原文件名,要给输出文件加自定义后缀,只需要修改${hdfs_output_path}/${filename}部分即可,比如改成${hdfs_output_path}/${filename}_processed就能给每个输出文件加上_processed后缀。
  • 所有针对单个文件的处理逻辑都写在循环内即可,操作时使用循环变量file指代当前正在处理的单个文件,不要再次使用通配符匹配整个输入目录。

内容的提问来源于stack exchange,提问作者christy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:15:04