附加到SequenceFile似乎非常慢。我们将文件夹(其中包含小文件)转换为sequencefiles,使用文件名作为键,内容作为值。但是,吞吐量非常低,大约为2mb/s(大约每秒2到3个文件)。我们有米奥。对于我们来说,每秒最多3个文件的速度非常慢。
我们要做的是一个简单的:
for(String file : files) {
byte[] data = Files.readAllBytes(Paths.get(dir.getAbsolutePath()
+ File.separatorChar + file));
byte[] keyBytes = l.getBytes("UTF-8");
BytesWritable key = new BytesWritable(keyBytes);
BytesWritable val = new BytesWritable(data);
seqWriter.append(key, val);
}
有什么关于如何加速的提示和想法吗?
1条答案
按热度按时间2skhul331#
大多数情况下,罪魁祸首是编写压缩文件(例如,gzip没有本机lib支持)。你没提到你是怎么设置的
seqWriter
,所以这只是猜测。另一个需要加速的方法是分批或异步并行地预取文件,因为下载小文件的延迟可能是瓶颈,而不是实际的追加操作。
如果append是瓶颈,还可以增加缓冲区大小。或者配置
io.file.buffer.size
(默认4k)或使用BufferSizeOption
选项。