Hadoop FileSystem类

声明:代码来自《Hadoop应用技术开发详解》4.7.2,版权归作者所有。

1. 概述

  文件在Hadoop中表示为一个Path对象,可以把路径看做是Hadoop文件系统的URI,例如:hdfs://master:9000/user/hadoop/study/mr/WordCount/input/file1.txt

  FileSystem是Hadoop中文件系统的抽象父类,Configuration对象封装了客户端或者服务器端的配置信息。

  通过FileSystem类访问Hadoop中的文件,基本方法是首先通过FileSystem类的get方法获取一个实例,然后调用它的open方法获得输入流。

2. 代码

file: hdfs\FileSystemReader.java

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

import java.io.InputStream;
import java.net.URI;

/**
 * @version 1.0.0, 2015/2/2
 */
public class FileSystemReader {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        String uri = args[0];
        FileSystem fs = FileSystem.get(URI.create(uri), conf);
        InputStream inputStream = null;

        try {
            inputStream = fs.open(new Path(uri));
            IOUtils.copyBytes(inputStream, System.out, 4096, false);
        } finally {
            IOUtils.closeStream(inputStream);
        }
    }
}

3. 运行结果

[[email protected] hdfs]$ hadoop jar FileSystemReader.jar hdfs://master:9000/user/hadoop/study/mr/WordCount/input/file1.txt
Hello, i love coding
are you ok?
Hello, i love hadoop
areyou ok?
时间: 2024-07-31 19:35:09

Hadoop FileSystem类的相关文章

hadoop FileSystem类和SequenceFile类实例

Hadoop的FileSystem类是与Hadoop的某一文件系统进行交互的API,虽然我们主要聚焦于HDFS实例,但还是应该集成FileSystem抽象类,并编写代码,使其在不同的文件系统中可移植,对于测试编写的程序非常重要.可以使用本地文件系统中的存储数据快速进行测试. 一.从Hadoop FileSystem读取数据 1.java.net.URL private FileSystem fs; /** * 通过FsUrlStreamHandlerFactory实例调用java.net.URL

使用FileSystem类进行文件读写及查看文件信息

使用FileSystem类进行文件读写及查看文件信息 在这一节我们要深入了解Hadoop的FileSystem类--这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现,但我们在编码时一般也要注意代码在FileSystem不同子类文件系统之间的可移植性.这是非常有用的,比如说你可以非常方便的直接用同样的代码在你的本地文件系统上进行测试. 使用hadoop URL读数据 从hadoop文件系统中读取文件的最简单的方法之一便是使用java.net.URL对象来打开一个欲从中

Hadoop FileSystem文件系统的概要学习

在学习Hadoop FileSystem模块之前,最好的建议就是先去学习一下Linux本地文件系统的设计实现,这将会大大的帮助你了解Hadoop FileSystem,至少很多思想都是共通的.其实老实说,Hadoop FileSystem的确是集成了很多文件系统的诸多优点,在设计上还是有非常多值得学习的地方的.这里说的FileSystem可不是就仅仅的是HDFS,HDFS只是他的一个实现.也就是FileSystem是在其上的所有文件系统的一个抽象,的确上特也就是一个抽象类. FileSystem

hadoop各个类及其作用

1.基础包(包括工具包和安全包) 包括工具和安全包.其中,hdfs.util包含了一些HDFS实现需要的辅助数据结构:hdfs.security.token.block和hdfs.security.token.delegation结合Hadoop的安全框架,提供了安全访问HDFS的机制. hdfs.util(一些HDFS实现需要的辅助数据结构) AtomicFileOutputStream.java----继承实现类:原子文件输出流类:DataTransferThrottler.java----

使用hadoop的类操作HDFS

1. 创建文件夹 private static final String PATH = "hdfs://hadoop:9000/"; private static final String DIR = "/d2"; public static void main(String[] args) throws Exception { FileSystem fileSystem = FileSystem.get(new URI(PATH), new Configurati

HDFS FileSystem类操作常用方法

package com.hdfs; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.

HBase-协处理器详解及实现

协处理器(coprocessor) 把一部分计算移动到数据的存放端. 简介 协处理器允许用户在region服务器上运行自己的代码,允许用户执行region级别的操作,并且可以使用与RDBMS中触发器(trigger)类似的功能.在客户端,用户不用关心操作具体在哪里执行,HBase的分布式框架会帮助用户把这些工作变得透明. 协处理器框架提供了一些类,用户可以通过继承这些类来扩展自己的功能.主要分为以下两大类 observer 这一类协处理器与触发器(trigger)类似:回调函数(也被称作钩子函数

hadoop学习;自己定义Input/OutputFormat;类引用mapreduce.mapper;三种模式

hadoop切割与读取输入文件的方式被定义在InputFormat接口的一个实现中.TextInputFormat是默认的实现,当你想要一次获取一行内容作为输入数据时又没有确定的键.从TextInputFormat返回的键为每行的字节偏移量,但眼下没看到用过 曾经在mapper中曾使用LongWritable(键)和Text(值),在TextInputFormat中,由于键是字节偏移量.能够是LongWritable类型,而当使用KeyValueTextInputFormat时,第一个分隔符前后

一步一步跟我学习hadoop(6)----hadoop利用FileSystem API 执行hadoop文件读写操作

hadoop文件系统较普通的文件系统差异性主要在于其容错性,普通文件系统不能直接查看hadoop的hdfs对应的文件信息.文件存储起来之后,我们是需要可以访问才能够体现它的价值,hadoop提供了FileSystem API来进行hadoop的文件读写. 本节我是对照hadoop的API中的FileSystem类写的demo,包含了一些主要的方法,更多的需要从相关api中进行查询编写. package org.apache.hadoop.wyg; import java.io.IOExcepti