读取hdfs文件系统里的文件

hadoop的文件系统在程序代码里面用起来就如我们本地的文件系统一样,可以从里面读取文件,存入文件,等等。

下面我们来演示一个从hdfs中的一个目录里,读取这个目录下所有文件的文件名的程序。

 1 import org.apache.hadoop.conf.Configuration;
 2 import org.apache.hadoop.fs.*;
 3 import org.apache.hadoop.mapreduce.lib.input.FileSplit;
 4 import org.junit.Test;
 5 
 6 import java.io.IOException;
 7 import java.net.URI;
 8 
 9 /**
10  * Created with IntelliJ IDEA.
11  * User: Isaac Li
12  * Date: 12/11/12
13  * Time: 9:42 AM
14  * To change this template use File | Settings | File Templates.
15  */
16 public class WordCountTest {
17     @Test
18     public void test(){
19         Configuration conf = new Configuration();
20         try {
21             //创建一个文件系统实例
22             FileSystem hdfs = FileSystem.get(URI.create("hdfs://10.40.30.173:9000/user/root/input"), conf);
23             //文件状态
24             FileStatus[] inputFiles = hdfs.listStatus(new Path("hdfs://10.40.30.173:9000/user/root/input"));
25             //输出文件名
26             for(int i = 0; i < inputFiles.length; i++){
27                 System.out.println(inputFiles[i].getPath().getName());
28         }
29         }catch(IOException e){
30             e.printStackTrace();
31         }
32     }
33 }

代码重现步骤:

1. 安装hadoop的相关jar包

2. 将此段代码复制到你的eclipse或者其他IDE

3. 将代码中hdfs的URI,改成你的hdfs的URI

4. 运行代码,即可输出你指定的hdfs的文件夹下的所有文件

posted on 2012-12-11 10:27  brainworm  阅读(564)  评论(0编辑  收藏  举报

导航