012 HDFS API 文件读写代码演示

时间:2023-03-08 16:22:49

一:准备工作

1.新建class类

  012 HDFS API 文件读写代码演示

2.开启HDFS服务

  012 HDFS API 文件读写代码演示

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

  012 HDFS API 文件读写代码演示

  方便了Configuration的读取配置。

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

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

  012 HDFS API 文件读写代码演示

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

  (方式一)

  012 HDFS API 文件读写代码演示

  (方式二)

  012 HDFS API 文件读写代码演示

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

6.分别解析,写入流

  012 HDFS API 文件读写代码演示

7.优化readFile

  012 HDFS API 文件读写代码演示

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

  012 HDFS API 文件读写代码演示

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

四:完整源代码

 package com.senior.hdfs;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils; public class HDFSApp { public static FileSystem getFileSystem() throws Exception{
Configuration configuration=new Configuration();
FileSystem fileSystem=FileSystem.get(configuration);
return fileSystem;
}
//read
public static void read() throws Exception{
FileSystem fileSystem=getFileSystem();
String fileName="/user/beifeng/mapreduce/wordcount/input/wc.input";
Path path=new Path(fileName);
FSDataInputStream inStream=fileSystem.open(path);
try{
IOUtils.copyBytes(inStream, System.out, 4096, false);
}catch(Exception e){
e.printStackTrace();
} }
//write
public static void write() throws Exception{
FileSystem fileSystem=getFileSystem();
//output fileName
String outputFileName="/opt/datas/wc.input";
//input fileName
String inputFileNmae="/user/beifeng/mapreduce/wordcount/input2/wc.input";
Path path=new Path(inputFileNmae);
FSDataOutputStream outStream=fileSystem.create(path);
FileInputStream inStream=new FileInputStream(new File(outputFileName));
try{
IOUtils.copyBytes(inStream, outStream, 4096, false);
}catch(Exception e){
e.printStackTrace();
}finally{
IOUtils.closeStream(inStream);
IOUtils.closeStream(outStream);
} }
public static void main(String[] args) throws Exception {
// read();
write(); } }