我正在尝试从 Google Storage 读取文件并将其写入我们的文件系统 (HDFS) 中的文件。如果我运行它一段时间(比如说 7 天),有时我会得到完整的文件,其中的行与源上的内容匹配,有时我会得到部分文件(差异很大)。我粘贴在接受响应并将其写入文件的方法下方。任何有关如何进一步解决此问题的帮助或建议将不胜感激。
谢谢,
在调用此方法之前,我对响应状态代码进行了简单检查 -
if(response.getStatusCode() == 200 &&
StringUtils.equals(response.getContentType(), "application/zip")) {
writeHdfsFile(response, path);
}
private void writeHdfsFile(HttpResponse response, String path) throws IOException {
final GZIPInputStream inputStream = new GZIPInputStream(response.getContent());
Path filePath = new Path(path);
final FSDataOutputStream outputStream = fileSystem.create(filePath, true);
final byte[] buffer = new byte[1024];
int length;
try {
while((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
} finally {
inputStream.close();
outputStream.close();
}
}