gpt4 book ai didi

java - 在 java distcp 中使用 -update 选项

转载 作者:行者123 更新时间:2023-12-01 19:47:56 28 4
gpt4 key购买 nike

我的目标是在java中使用java distcp api。
使用命令行我可以执行 distcp :

hadoop --config /path/to/cluster2/hadoop/conf distcp -skipcrccheck -update hdfs://clusterHA1/path/to/file hdfs://clusterHA2/path/to/target

在java中,我在使用-skipcrccheck和-update选项时遇到了一些麻烦。

final DistCpOptions distcpOption = new DistCpOptions(sourceFile, destFile);
distcpOption.setSkipCRC(true);
distcpOption.setSyncFolder(true);
runExitCode = this.distCpRun(sourceFile, destFile, distcpOption);

我得到这个异常:

java.lang.IllegalArgumentException: Skip CRC is valid only with update options

当你查看代码时,顺序非常重要,所以我切换两个选项:

final DistCpOptions distcpOption = new DistCpOptions(sourceFile, destFile);
distcpOption.setSyncFolder(true);
distcpOption.setSkipCRC(true);
runExitCode = this.distCpRun(sourceFile, destFile, distcpOption);

我得到:

java.io.IOException: Check-sum mismatch between source and target

我非常确定 setSyncFolder 在 DistCpOption 中设置了更新选项:

public enum DistCpOptionSwitch {
SYNC_FOLDERS("distcp.sync.folders", new Option("update", false, "Update target, copying only missingfiles or directories")),
}

我使用的是hadoop 2.6.4我两个集群之间不匹配,因为每个集群都有自己的 rangerKMS 实例。我将文件从未加密区域发送到加密区域,这在命令行中运行良好。

最佳答案

我最终通过将参数传递给主函数而不是使用 distcpOption 构建器解决了这个问题。

distCp.run(new String[] {"-skipcrccheck", "-update",source, destination });

关于java - 在 java distcp 中使用 -update 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108212/

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