如何在仅仅启动HDFS情况下处理HDFS中的文件

最近项目中需要这样一个应用,将上海市的遥感图像生成金字塔存储到Hadoop的HDFS中去,

然后在前台的三维地球画面上点击浏览,就会自动从HDFS下载相应的TIFF图像,并贴到地球上,显示。

 

但是这样出现了一个问题,如何从HDFS中下载图像呢?

 

我最初采用了绑定 地理坐标与TIFF图像,并且通过Java执行shell指令

 

bin/hadoop dfs -copyToLocal /hdfs /localfs

 

的方式,发现这种方式实用性有限,就琢磨着如何在普通的Java程序中根据HDFS中的文件名创建HDFS的FileSystem,

 

并且传出文件流,但是一直出现一种情况,HDFS的路径被程序认为是 本地Linux的文件系统而发生错误,

 

经过调试发现,在不启动mapreduce的情况下,conf对象是不会读取hadoop-site.xml的,

 

这样就郁闷了,在博士gg的指点下,我发现可以手工指定conf中配置使用HDFS文件系统,

 

具体做法很简单,就是

 

Configuration conf = new Configuration();

conf.set("fs.default.name","hdfs://nd0:54310");

 

郁闷了两天的问题终于解决了,希望这种使用方法能对大家有所帮助。

 

PS:最近已经成功的在Hadoop中重写了InputFormat,可以读取图像了,

 

希望有志同道合的筒子一起研究,用分布式的方法处理图像,做些处理,站内我。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值