1。后台工作,使用MapReduce任务导出一批包含路径的文件,一共300W+行。需要查看相应服务器中是否存在文件,而文件所在的服务器不是hadoop集群服务器,所以打算使用bash脚本。具体方法如下(直接看方法2,方法1效率较低):2、方法a.方法一原计划使用如下脚本进行简单验证:!/bin/bashcount=0catoriTest.txt|而读取数据docount=$(($count+1))echo$countdir=echo"$data"|awk-F"\t"'{print$5}'if[-e$dir];thenecho"$data">>exist.txtelseecho"$data">>noexist.txtfidone原始数据格式如下:namemarkiddir发现运行时处理5000行(机器8核)需要将近4、5分钟。执行方法,见方法2b。方法二主要是将大文件分割成小文件,然后通过后台遍历读取小文件。脚本如下:!/bin/bashsource~/.bashrc判断路径是否存在readdata(){cat$1|而读取datadodir=echo"$data"|awk-F"\t"'{print$5}'if[-e$dir];thenecho"$data">>"exist_$1.txt"elsecho"$data">>"noexist_$1.txt"fidone}的大文件分割成小文件,生成的文件名为xaa、axb等(文件名可以自己命名)split-l10000oriTest.txtdeclare-afiles#declarearrayfiles=($(lsx*))#保存分割后的小文件名进行数组遍历,后台执行foriin${files[@]};doecho$ireaddata$i&done如何快速将Linux大文件处理成小文件。以上就是良序教程网为各位小伙伴们分享的Linux相关知识。
