文件流式处理
在处理hdfs数据时,可能会遇到本地磁盘空间不足以存放数据的问题,这时我们可以使用linux的stdio对数据进行流式处理,以替换每行内容为例
1 | hadoop -cat hdfs://your_path/your_file |\ |
这样利用pipe完成了对数据的处理,同时避免了数据在本地落盘。
遍历文件夹处理
此外还可以搭配xargs遍历整个目录
hadoop -ls -h hdfs://your_path
列出整个目录awk -F' ' '{print $NF}'
取出最后一列,也就是文件地址列awk -F'/' '{print $NF}'
将地址中的文件名取出xargs -I {} bash -c ...
将每个文件名依次作为参数处理"hadoop -cat ..."
按照之前流式处理的方式处理每一个文件
1 | hadoop -ls -h hdfs://your_path | awk -F' ' '{print $NF}' | awk -F'/' '{print $NF}' | xargs -I {} bash -c "hadoop -cat hdfs://your_path/{} | sed 's/some_thing/some_other/g' | hadoop -put - hdfs://your_other_path/{}" |