HDFS API 文件读写代码演示

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS API 文件读写代码演示相关的知识,希望对你有一定的参考价值。

一:准备工作

1.新建class类

  

 

2.开启HDFS服务

  

 

 

3.将配置文件拷贝进resources路径

  

  方便了Configuration的读取配置。

 

 

二:读出HDFS文件系统中的文件到控制台

4.读出在路径中的文件,显示在控制台上

  

 

 

5.分别解析,获取文件系统(两种方式)

  (方式一)

  

  (方式二)

  

  这种方式不需要复制配置文件进resources,但是这种被写死了。

 

 

6.分别解析,写入流

  

 

 

7.优化readFile

  

 

 三:把文件上传到HDFS上,即为WriteFile

   

  注意点:fileName="user/beifeng/wc.input",加上wc.input

 

 

四:完整源代码

 1 package com.senior.hdfs;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.IOException;
 6 
 7 import org.apache.hadoop.conf.Configuration;
 8 import org.apache.hadoop.fs.FSDataInputStream;
 9 import org.apache.hadoop.fs.FSDataOutputStream;
10 import org.apache.hadoop.fs.FileSystem;
11 import org.apache.hadoop.fs.Path;
12 import org.apache.hadoop.io.IOUtils;
13 
14 public class HDFSApp {
15 
16     public static FileSystem getFileSystem() throws Exception{
17         Configuration configuration=new Configuration();
18         FileSystem fileSystem=FileSystem.get(configuration);
19         return fileSystem;
20     }
21     //read
22     public static void read() throws Exception{
23         FileSystem fileSystem=getFileSystem();
24         String fileName="/user/beifeng/mapreduce/wordcount/input/wc.input";
25         Path path=new Path(fileName);
26         FSDataInputStream inStream=fileSystem.open(path);
27         try{
28             IOUtils.copyBytes(inStream, System.out, 4096, false);
29         }catch(Exception e){
30             e.printStackTrace();
31         }
32         
33     }
34     //write
35     public static void write() throws Exception{
36         FileSystem fileSystem=getFileSystem();
37         //output fileName
38         String outputFileName="/opt/datas/wc.input";
39         //input fileName
40         String inputFileNmae="/user/beifeng/mapreduce/wordcount/input2/wc.input";
41         Path path=new Path(inputFileNmae);
42         FSDataOutputStream outStream=fileSystem.create(path);
43         FileInputStream inStream=new FileInputStream(new File(outputFileName));
44         try{
45             IOUtils.copyBytes(inStream, outStream, 4096, false);
46         }catch(Exception e){
47             e.printStackTrace();
48         }finally{
49             IOUtils.closeStream(inStream);
50             IOUtils.closeStream(outStream);
51         }
52         
53     }
54     public static void main(String[] args) throws Exception {
55 //        read();
56         write();
57 
58     }
59 
60 }

 

以上是关于HDFS API 文件读写代码演示的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Java API读写HDFS

如何使用Java API读写HDFS

如何使用Java API读写HDFS

HDFS进阶——文件存储和读写流程

使用Java API操作HDFS时,_方法用于获取文件列表?

大数据技术之Hadoop(HDFS)概述Shell操作API操作读写流程工作机制