(转)今天的進度是研究如何讓使用者透過網路來下載 HDFS 上的檔案,基本上這和壓縮一般的檔案沒什麼兩樣,直接透過 java 內建的
java.util.zip 套件就可以輕易做到了。唯一的差別,在這裡要用 Hadoop API 提供的 FSDatainputStream
來開啟檔案串流,然後逐一寫入到壓縮串流就可以完成檔案壓縮的目的。
而在操作流程的上,使用者會先選擇要下載的檔案,這個對 HTML 有基礎瞭解的開發人員不是什麼問題,利用 Form 加 Checkbox 就可以輕易的達成目的,當使用者選擇確認後,再送到 servlet 處理就可以了。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String photoYear = request.getParameter("photoYear");
String id = request.getParameter("id");
Configuration conf = new Configuration();
conf.set("hadoop.job.ugi","hadoop,supergroup");
String uriBase= String.format("hdfs://cloud:9000/%s/%s/", photoYear, id);
String files[] = request.getParameterValues("SelectPic");
BufferedOutputStream dest = new BufferedOutputStream(response.getOutputStream());
ZipOutputStream outZip = new ZipOutputStream(new BufferedOutputStream(dest));
response.setHeader("Content-Type", "application/zip");
int bytesRead;
Path sourceFilePath;
FileSystem fs = FileSystem.get(URI.create(uriBase),conf);
try {
for (int i=0; i < files.length; i++) {
sourceFilePath = new Path(uriBase + files[i]);
//開啟資料輸入串流
FSDataInputStream in = fs.open(sourceFilePath);
//建立檔案的 entry
ZipEntry entry = new ZipEntry(files[i]);
outZip.putNextEntry(entry); //將壓縮串流移到此 entry 的資料位置
//透過檔案輸入串流, 將 HDFS 檔案內容寫入到壓縮串流
byte[] buffer = new byte[4096];
while ((bytesRead = in.read(buffer)) < 0) {
outZip.write(buffer, 0, bytesRead);
}
in.close();
}
outZip.flush();
outZip.close();
} catch(Exception e) {
outZip.close();
e.printStackTrace();
}
}
分享到:
相关推荐
hdfs文件的下载
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java 网址:...
hdfs文件的查看 hdfs fs -cat /文件名
主要介绍了Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
hdfs-compress 压缩hdfs文件 一般压缩hdfs指 ,数据文件的压缩 和 mapred 中间结果压缩 工程只做数据压缩,至于MR中间结果压缩减少网络IO,只需要配置 mapred-site.xml 即可,网上资料很多。 工程只实现了lzo的压缩...
hdfs 文件的上传,hdfs fs -put /文件名
讲解HDFS小文件处理方案方法
windows平台下的HDFS文件浏览器,就像windows管理器一样管理你的hdfs文件系统。现在官网已经停止更新这款软件。具体配置如下: HDFS配置页面及端口http://master:50070 配置HDFS服务器 配置WebHDFS HDFS Explorer...
本文档是关于hadoop中HDFS的文件读写操作的一份ppt,适用于学习hadoop新手.
第三章 分布式文件系统HDFS3 Hadoop存储系统HDFS的文件是分块存储,每个文件块默认大小为32MB。 T F 评测结果:答案正确(5 分) 1-2 HDFS系统采用NameNode定期向DataNode发送心跳消息,用于检测系统是否正常运行...
集群外节点安装客户端使用hdfs上传文件失败用户问题集群外节点安装客户端使用hdfs上传文件失败问题现象在集群节点上安装客户端,在该客户端使用hdfs命令上传一
文档详细的讲述了Hadoop中HDFS文件操作命令和HDFS编程
HDFS文件系统,大数据资源文件
阐述了如何利用利用javaAPI访问HDFS的文件
上传文件到HDFS的java代码实现。已经测试了,可以直接运行。
从HDFS中读文件,用groupby进行sort,然后写入Hbase中
python解析hdfs文件内容生成本地文件、及相关插件包安装实现方式
hadoop及eclipse操作HDFS需要文件、、
从本地上传文件到HDFS上的代码!使用hadoop的API操作,使本地文件的代码上传到HDFS上!!!
hdfs读取文件详细流程,绝对真实!