【发布时间】:2015-08-04 14:35:20
【问题描述】:
我有一个 java 程序,它向网络服务发送一系列 GET 请求并将响应正文存储为文本文件。
我已经实现了以下示例代码(过滤了大部分代码以突出显示相关内容),它附加了文本文件并在 EOF 处作为新行写入。然而,代码运行良好,但随着文件大小的增大,性能会受到影响。
数据的总大小几乎是 4 GB,并且在 avg 上附加了大约 500 KB 到 1 MB 的数据。
do
{
//send the GET request & fetch data as string
String resultData = HTTP.GET <uri>;
// buffered writer to create a file
BufferedWriter writer = new BufferedWriter(new FileWriter(path, true));
//write or append the file
writer.write(resultData + "\n");
}
while(resultData.exists());
这些文件每天创建并移动到 hdfs 以供 hadoop 使用并作为实时存档。有没有更好的方法来实现这一点?
【问题讨论】:
-
为什么要为每个单独的请求重新打开编写器?只需在 do-while 循环之前打开一次。不要忘记在 do-while 循环之后关闭它。
标签: java web-services hadoop filesystems hdfs