首页 > 代码库 > [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 许可协议进行许可。欢迎转载、演绎,但是必须保留本文的署名林羽飞扬,若需咨询,请给我发信
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。