在 java distcp 中使用 -update 选项
Using -update option in java distcp
我的目标是在 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 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 });