1

我正在尝试从 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();
        }
    }
4

1 回答 1

1

我们解决它的方法是先下载文件,然后解压缩并写入。基本上,将其分为两个步骤解决了该问题。如果其他人遇到同样的问题..

于 2013-08-28T00:46:57.697 回答