gpt4 book ai didi

java - 使用 FileUtil API 在同一个 hdfs 中复制文件需要太多时间

转载 作者:可可西里 更新时间:2023-11-01 16:41:43 26 4
gpt4 key购买 nike

我有 1 个 HDFS 和我的本地系统,我从那里执行我的程序以在同一个 hdfs 系统中执行复制。比如:hadoop fs -cp/user/hadoop/SrcFile/user/hadoop/TgtFile

我正在使用:

FileUtil.copy(FileSystem srcFS,
FileStatus srcStatus,
FileSystem dstFS,
Path dst,
boolean deleteSource,
boolean overwrite,
Configuration conf)

但奇怪的事情发生了,当我从命令行复制时,复制只需要一点时间,但当我以编程方式执行时,复制 190 MB 的文件需要 10 - 15 分钟。

对我来说,它看起来像是通过我的本地系统流式传输数据而不是直接流式传输,因为目标也与源位于同一文件系统上。

如果我错了请纠正我,并帮助我找到最佳解决方案。

最佳答案

你是对的,使用 FileUtil.copy 流是通过你的程序传递的(src --> yourprogram --> dst)。如果 hadoops 文件系统 shell API (hadoop dfs -cp) 比您可以通过 Runtime.exec(cmd) 使用相同的速度更快

https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java

关于java - 使用 FileUtil API 在同一个 hdfs 中复制文件需要太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40541046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com