首页 > 代码库 > [hadoop]hadoop权威指南例第二版3-1、3-2

[hadoop]hadoop权威指南例第二版3-1、3-2

hadoop版本1.2.1

jdk1.7.0

 

例3-1、通过URLStreamHandler实例以标准输出方式显示Hadoop文件系统的文件

hadoop fs -mkdir input

在本地创建两个文件file1,file2,file1的内容为hello world,file2内容为hello Hadoop,然后上传到input,具体方法如Hadoop集群(第6期)_WordCount运行详解中 2.1、准备工作可以看到。

 

完整代码如下:

 1 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; 2 import org.apache.hadoop.io.IOUtils; 3 import java.net.URL; 4 import java.io.InputStream; 5  6 public class URLCat{ 7         static { 8                 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); 9         }10         public static void main(String[] args) throws Exception {11                 InputStream in = null;12                 try{13                         in = new URL(args[0]).openStream();14                         IOUtils.copyBytes(in,System.out,4096,false);15                 }16                 finally{17                         IOUtils.closeStream(in);18                 }19         }20 }

 

编译生成class文件,打包成jar文件,打包方法在[hadoop]命令行编译并运行hadoop例子WordCount有详细讲述。

然后使用命令

hadoop jar URLCat.jar URLCat hdfs://localhost:9000/usr/hadoop/input/file1
hdfs://localhost:9000是HDFS文件系统的名字,在conf/core-site.xml中有设置

运行结果

hadoop@Mint ~/hadoop-1.2.1/classes $ hadoop jar URLCat.jar URLCat hdfs://localhost:9000/user/hadoop/input/file1hello world

 例3-2、直接使用FileSystem以标准输出格式显示Hadoop文件系统中的文件

完整代码

 1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.fs.FileSystem; 3 import org.apache.hadoop.fs.Path; 4 import java.net.URI; 5 import java.net.URL; 6 import java.io.InputStream; 7 import org.apache.hadoop.io.IOUtils; 8  9 public class FileSystemCat {10     public static void main(String[] args) throws Exception {11         String uri = args[0];12         Configuration conf = new Configuration();13         FileSystem fs = FileSystem.get(URI.create(uri), conf);14         InputStream in = null;15         try {16             in = fs.open(new Path(uri));17             IOUtils.copyBytes(in, System.out, 4096, false);18         } finally {19             IOUtils.closeStream(in);20         }21     }22 }

同理编译打包运行实例

hadoop jar FileSystemCat.jar FileSystemCat hdfs:locahost:9000/user/hadoop/input/file2

结果显示

hadoop@Mint ~/hadoop-1.2.1/classes $ hadoop jar FileSystemCat.jar FileSystemCat hdfs://localhost:9000/user/hadoop/input/file1hello hadoop

 

知识共享许可协议
本文基于知识共享署名-非商业性使用 3.0 许可协议进行许可。欢迎转载、演绎,但是必须保留本文的署名林羽飞扬,若需咨询,请给我发信