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

如何在Hadoop中跳过HDFS大文件指定行数并拷贝至新文件?

跳过HDFS文件前36行拷贝的实现方法

存在可直接实现该需求的方案,无需额外安装第三方工具,常用实现方法如下:

  • 小/中等体积文件方案(单节点执行)
    直接通过hadoop fs命令结合shell文本处理工具管道实现,命令示例:
    # 方法1:用sed实现
    hadoop fs -cat /源文件HDFS路径 | sed -n '37,$p' | hadoop fs -put - /目标文件HDFS路径
    # 方法2:用tail实现,效果完全一致
    hadoop fs -cat /源文件HDFS路径 | tail -n +37 | hadoop fs -put - /目标文件HDFS路径
    
    命令说明:sed -n '37,$p'和tail -n +37均表示从第37行开始输出内容直到文件末尾,末尾的-代表读取标准输入的内容写入HDFS目标路径。
  • 大文件/多文件分布式场景方案
    单节点管道方案会让所有数据流经执行命令的节点,大文件场景效率极低,可通过Hadoop Streaming作业利用集群资源分布式处理,命令示例:
    hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-*.jar \
      -D mapreduce.job.reduces=0 \
      -input /源文件/目录HDFS路径 \
      -output /目标目录HDFS路径 \
      -mapper 'sed -n "37,\$p"'
    
    注意事项:目标目录必须是预先不存在的空目录,作业执行完成后结果会存放在该目录下的part文件中,如需合并为单个文件可后续执行hadoop fs -getmerge操作。

额外注意事项

  • 若需要对全局合并后的总内容跳过前36行(而非每个输入文件分别跳过前36行),仅可使用第一种单节点管道方案
  • 若HDFS文件采用了非行分割的特殊格式,建议先小范围验证输出内容的正确性,避免行识别异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:45:05