performance - 在UNIX中分割文件

标签 performance unix split bigdata

只是想知道是否有一种更快的方法可以将文件分割为unix“split”以外的N个块。

基本上,我有大文件,我希望将它们分成较小的块,并并行地对每个文件进行操作。

最佳答案

我假设您正在使用split -b,它将比按行分割的CPU效率更高,但仍会读取整个输入文件并将其写到每个文件中。如果执行split这部分的串行特性是您的瓶颈,则可以使用dd并行提取文件块。每个并行进程都需要一个独特的dd命令。这是一个示例命令行(假设the_input_file是一个大文件,它从中间提取了一点):

dd skip=400 count=1 if=the_input_file bs=512 of=_output

为了使这项工作有效,您需要选择countbs的适当值(上面的值很小)。每个工作人员还需要选择不同的skip值,以使块不会重叠。但这是有效的。 dd通过搜索操作实现skip

当然,这仍然不如实现数据使用者进程那样高效,因为它可以与其他类似的使用者进程并行地直接读取输入文件的指定块。但是我认为,如果您可以这样做,您就不会问这个问题。

关于performance - 在UNIX中分割文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10627908/

相关文章:

python - 将一串空格分隔的单词拆分为多行

c - 用 OpenCL C 编写快速线性系统求解器

performance - React 16 性能中的无状态函数与类

linux - 在 Perl 脚本中使用未初始化的值

python - 为什么这个正则表达式会产生四个项目?

php - 如何使用 explode() 将查询值拆分为多个多行以用于选择标记

Android - E/Surface:queueBuffer : error queuing buffer to SurfaceTexture, -22 崩溃

c# - 多次 Response.writeAsync 调用

c++ - 当同一进程使用 FIFO 的两端时无法重新打开 FIFO

c - stdout 重定向更改输出