我正在研究将SFTP文件从HDFS文件系统远程传输的Java代码。 对于小于200 MB的较小文件,它工作正常。 对于大文件,出现以下错误。
17/08/08 02:44:49 ERROR sftp.SftpClient: Error writing data over SFTP service, error was: Failure
4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:1937)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:541)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:439)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:406)
我的代码如下:
public static void sendFile(String targetDirectory, String sourceFileWithFullPath) throws IOException {
SftpClient client = new SftpClient("karthick");
BufferedInputStream bis = null;
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
FSDataInputStream fsdisPath = null;
String filePath = null;
try {
filePath=sourceFileWithFullPath;
Path inputPath = new Path(filePath);
fsdisPath = fs.open(inputPath);
bis = new BufferedInputStream(fsdisPath);
client.login("karthick","/karthick/id_rsa", null);
client.changeWorkingDirectory(targetDirectory);
client.storeFile(inputPath.getName(), bis);
System.out.println("The actual path is" + client.getAbsolutePath(sourceFileWithFullPath));
}
finally {
if (client != null) {
client.disconnect();
}
if (bis != null) {
bis.close();
}
}
}
我确保我有足够的磁盘空间,没有内存问题以及所有必需的权限。 避免此问题的其他可能方法是什么。 我计划使用此实用程序来复制500GB文件。 我开始学习Java,现在开始学习基础知识。 任何建议将不胜感激。
更新:我也收到此错误com.jcraft.jsch.JSchException:verify:false。 我在必要时添加了密钥。 我该如何解决这个问题
ERROR sftp.SftpClient: Error during login to karthick@karthick
com.jcraft.jsch.JSchException: verify: false
at com.jcraft.jsch.Session.connect(Session.java:295)
at com.jcraft.jsch.Session.connect(Session.java:150)
at org.mule.transport.sftp.SftpClient.login(SftpClient.java:178)