1.背景

工作中使用MapReduce任务导出一批含有路径的文件,共计行数300W+,需要检测文件是否在对应的服务器中存在,而文件所在的服务器并非hadoop集群的服务器,因此打算采用bash脚本进行。具体的方法如下(可直接看方法2,方法1效率较低):

2. 采用的方法

a. 方法1

原本打算使用如下脚本,进行简单验证:

!/bin/bash
count=0
cat oriTest.txt | while read data
do
count=$(( $count+1 ))
echo $count
dir=echo "$data" | awk -F "\t" '{print $5}'
if [ -e $dir ];then
echo "$data" >> exist.txt
else
echo "$data" >> noexist.txt
fi
done

原始数据格式如下:

name mark id dir

运行时发现处理5000行需要将近4、5分钟的时间(机器为8核),果断不行啊,随后打算采用多进程的方法来执行,见方法2

b. 方法2

主要是通过将大文件分为小文件,然后对小文件进行后台遍历读取,脚本如下:

!/bin/bash
source ~/.bashrc

判断路径是否存在

readdata(){cat $1 | while read data
do
dir=echo "$data" | awk -F "\t" '{print $5}'
if [ -e $dir ];then
echo "$data" >> "exist_$1.txt"
else
echo "$data" >> "noexist_$1.txt"
fi
done
}

大文件切分为小文件,生成文件名为xaa,axb等(可以自己命名文件)

split -l 10000 oriTest.txtdeclare -a files # 声明数组files=($(ls x*)) # 分割后的小文件名保存数组

遍历,并后台执行

for i in ${files[@]};do
echo $i
readdata $i &
done

参考链接 :

https://mp.weixin.qq.com/s/rp4Bs8lZFBUI_yruC825lw

Linux 大文件快速处理小的办法相关推荐

  1. c语言 拆分 文件,linux 将一个大文件分割成小的碎片文件 命令:csplit

    csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split ...

  2. 请问:怎么实现大文件快速上传?

    关注公众号 前端开发博客,领27本电子书 回复加群,自助秒进前端群 前言 大文件快速上传的方案,相信你也有过了解,其实无非就是将 文件变小,也就是通过 压缩文件资源 或者 文件资源分块 后再上传. 本 ...

  3. linux大文件分割 split命令

    原文地址为: linux大文件分割 split命令 inux split 命令 功能说明:切割文件. 语 法:split [--help][--version][-<行数>][-b < ...

  4. linux 传输大文件大小,Linux大文件传输(转)

    我们经常需要在机器之间传输文件.比如备份,复制数据等等.这个是很常见,也是很简单的.用scp或者rsync就能很好的完成任务.但是如果文件很大,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重 ...

  5. 如何将计算机网络文件夹复制到,如何将大文件快速拷贝/复制/分享到另一台电脑?...

    如何将大文件快速拷贝/复制/分享到另一台电脑?相信这是很多朋友都想知道是如何做到的吧.因为我们平时可以因为各种原因,如电脑格盘重装.高清电影分享.更换电脑等),需要将大文件拷贝至另一台电脑.那该怎么办 ...

  6. 如何将桌面文件夹移到计算机,如何将大文件快速拷贝/复制/分享到另一台电脑?...

    如何将大文件快速拷贝/复制/分享到另一台电脑?相信这是很多朋友都想知道是如何做到的,因为平时可以因为各种原因,如电脑格盘重装.高清电影分享.更换电脑等),需要将大文件拷贝至另一台电脑.那该怎么办呢? ...

  7. 如何快速传输大文件,介绍大文件快速方法

    现在,企业比以往任何时候都面临着一个重大挑战:需要一个快速共享文件的解决方案.但是,并非所有快速文件传输解决方案都以相同的速度传输文件.文件大小.端点位置.路径.设备.防火墙.网络系统和加密需求都会限 ...

  8. hive与spark合并小文件,将大文件打碎成小文件

    场景一:将小文件合并成大文件. mro_hour_test表每个分区有几千个1m未压缩小文件, 以下语句是将几千个文件在输入时(map阶段)合并成150M一个的文件,插入到mro_hour_test_ ...

  9. linux下载大文件失败,Linux下FTP/SFTP传输大文件总是失败的处理办法

    海外服务器,一般延迟都比较高.如果不是China Telecom/China Unicom路由直连,延迟更加的不稳定,甚至长连接会经常闪断.国内跨运营商服务器,没有BGP网关,也同样会发生这样的情况, ...

最新文章

  1. 8张图让你一步步看清 async/await 和 promise 的执行顺序
  2. Class.getResourceAsStream
  3. JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation
  4. 【招聘(上海)】东方财富证券招聘.net开发
  5. 清除error.log、access.log并限制Apache日志文件大小的方法
  6. Grunt 入门指南3:创建Tasks
  7. 我大学时代的好朋友要结婚了!
  8. 我为什么想并且要学习Scala
  9. 使用OData快速构建REST服务
  10. 怎样杀计算机病毒,如何彻底查杀计算机病毒
  11. causal snps | causal variants | tensorflow | 神经网络实战 | Data Simulation
  12. Java将UTC格式时间转换为北京时间
  13. 业务:杭州某私募基金公司商业模式
  14. 共阴极数码管,学号显示实验
  15. 湖北科目三驾考经验总结
  16. 微软CodePlex平台开源项目TOP10
  17. 如何正确使用 钳位二极管
  18. ios wkweb设置图片_iOS WKWebView识别H5中的图片资源
  19. C语言——输出杨辉三角的前n行
  20. 模糊搜索时查询到的数据和输入时顺序一致

热门文章

  1. lightNLP:框架功能丰富,开箱即用
  2. Catboost:超越Lightgbm和XGBoost的又一个boost算法神器
  3. 另类SEO优化推广之百度下拉词框优化推广是怎么做的?
  4. kinect v1原理_Kinect原理及介绍.ppt
  5. 本地时间转utc时间_有关机器时间、UTC时间、本地时间的总结
  6. leetcode求众数
  7. 知道python_看完这篇文章,你就知道Python是什么?
  8. win10怎么设置默认输入法_电脑输入法怎么设置成搜狗双拼?
  9. 深入理解Java String 池概念(String pool concept)
  10. 我的PGA我作主----搞清楚什么是真正的PGA