Hadoop学习之HDFS文件读取

这篇博客详细介绍了如何从Hadoop的HDFS中读取文件,包括获取FileSystem对象、打开文件及将文件内容输出到标准输出。通过Configuration类初始化,接着使用FileSystem.open()方法打开文件并创建DFSInputStream,最后通过FSDataInputStream.copyBytes()方法将文件内容显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件内容读取的代码可以分为三个大步骤。
1、获取文件系统
2、通过文件系统打开文件
3、将文件内容输出

    public static void read(Path path) throws IOException{
        FileSystem hdfs = HdfsUtils.getFilesystem();  //步骤 1
        FSDataInputStream fsDataInputStream =  hdfs.open(path); //步骤 2
        IOUtils.copyBytes(fsDataInputStream, System.out, 4096,false);  //步骤 3
    }

接下来,我们来看一下每个步骤的详细过程

一、获取文件系统对象(FileSystem)

要从HDFS上读取文件,必须先得到一个FileSystem。HDFS本身就是一个文件系统,所以,我们得到一个文件系统后就可以对HDFS进行相关操作。获取文件系统的步骤可以分为以下2步。
1、读取配置文件。
2、获取文件系统。

读取配置文件:Configuration 类有三个构造器,无参数的构造器表示直接加载默认资源,也可以指定一个boolean参数来关闭加载默认值,或直接使用另外一个Configuration 对象来初始化。

package com.yq.common;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;

public class HdfsUtils {
   
   
    public static FileSystem getFilesystem(){
        FileSystem hdfs=null;
        Configuration conf=new Configuration(); 
        try{
            URI uri = new URI("hdfs://localhost:9000");
            hdfs = FileSystem.get(uri,conf);
        }
        catch(Exception ex){
            //
        }
        return hdfs;
    }
}

二、打开文件

FSDataInputStream fsDataInputStream =  hdfs.open(path);

打开文件其实就是创建一个文件输入流,跟踪文件系统的open方法,可以找到源码

  public FSDataInputStream open(Path f) throws IOException {
    return open(f, getConf().getInt("io.file.buffer.size", 4096));
  }

再跟踪open方法,找到以下抽象方法。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值