linux split 按文件大小整行分割文本文件

linux split 按文件大小整行分割文本文件

在网上搜了一段时间,没搜到有专门写,如何把文件按大小分割,但切出来的文件每行是完整的(可能是我运行不好吧)。后来查了split --help 发现了如下方法。经过测试好用。

比如把50G文件分割成50个小文件,每个文件1G,如果按 -b 参数分割,有很多文件第一行和最后一行不是完整的,残缺不全。

笔者部份工作是hadoop数据入关系数据库工作,有时为了效率需要把大文件切成小文件,多线程入库。

直接上干货代码与测试结果。

案例一:

hdfs 上 /tmp/wjy/目录有35G gp压缩过的文件。使用 dfs -text 将/tmp/wjy/20210416/ 进行解压,写入到当前目录,将35G文件分割成274个文件(每个大约是128M). 可写个shell脚本,用命令取到 /tmp/wjy/20210416/目录总大小,再将 目录总大小/128M=要分割的文件数。

[jingyu.wang@hadoop test2]$ time hdfs dfs -text /tmp/wjy/20210416/* | split -n r/274

real    4m38.103s
user    4m28.147s
sys     3m8.376s

案例二:

直接将硬盘上的35G文件partsupp.tbl 拆分成274个文件。注意以下方式是不支持流式分割文件。只能把硬盘上指定文件进行分割。

[jingyu.wang@hadoop test1]$ time split -n l/274 ../partsupp.tbl   

real    1m22.209s
user    0m0.137s
sys     0m36.444s

案例三:

将硬盘上test.gz 文件解压后切割成274个文件。这个案例我没测试过,理论上是可行的。

[jingyu.wang@hadoop test1]$ gunzip -c /root/test.gz | split -n r/274
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值