HDFS 에서 JAVA API 사용

5027 단어 JAVAHDFS
HDFS 는 파일 시스템 인 만큼 새 파일,파일 삭제,파일 내용 읽 기 등 파일 을 조작 할 수 있 는 분산 파일 시스템 이다.HDFS 의 파일 을 JAVA API 로 조작 하 는 과정 을 기록 합 니 다.
HDFS 의 파일 작업 은 주로 몇 가지 종류 와 관련된다.
Configuration 클래스:이 클래스 의 대상 은 클 라 이언 트 나 서버 의 설정 을 봉 합 니 다.
FileSystem 클래스:이 클래스 의 대상 은 파일 시스템 대상 입 니 다.이 대상 의 일부 방법 으로 파일 을 조작 할 수 있 습 니 다.FileSystem fs = FileSystem.get(conf);FileSystem 의 정적 방법 get 을 통 해 이 대상 을 얻 을 수 있 습 니 다.
FSDataInputStream 과 FSDataOutputStream:이 두 종 류 는 HDFS 의 입 출력 흐름 입 니 다.FileSystem 의 open 방법 과 create 방법 을 통 해 얻 을 수 있 습 니 다.
구체 적 으로 파일 작업 에 대해 다음 과 같은 예 를 정리 하 는 방법:

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.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class HdfsTest {
  
  //     
  public static void createFile(String dst , byte[] contents) throws IOException{
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path dstPath = new Path(dst); //    
    //       
    FSDataOutputStream outputStream = fs.create(dstPath);
    outputStream.write(contents);
    outputStream.close();
    fs.close();
    System.out.println("      !");
  }
  
  //      
  public static void uploadFile(String src,String dst) throws IOException{
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(conf);
    Path srcPath = new Path(src); //   
    Path dstPath = new Path(dst); //    
    //             ,             ,true   ,   false
    fs.copyFromLocalFile(false,srcPath, dstPath);
    
    //      
    System.out.println("Upload to "+conf.get("fs.default.name"));
    System.out.println("------------list files------------"+"
"); FileStatus [] fileStatus = fs.listStatus(dstPath); for (FileStatus file : fileStatus) { System.out.println(file.getPath()); } fs.close(); } // public static void rename(String oldName,String newName) throws IOException{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path oldPath = new Path(oldName); Path newPath = new Path(newName); boolean isok = fs.rename(oldPath, newPath); if(isok){ System.out.println("rename ok!"); }else{ System.out.println("rename failure"); } fs.close(); } // public static void delete(String filePath) throws IOException{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path path = new Path(filePath); boolean isok = fs.deleteOnExit(path); if(isok){ System.out.println("delete ok!"); }else{ System.out.println("delete failure"); } fs.close(); } // public static void mkdir(String path) throws IOException{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path srcPath = new Path(path); boolean isok = fs.mkdirs(srcPath); if(isok){ System.out.println("create dir ok!"); }else{ System.out.println("create dir failure"); } fs.close(); } // public static void readFile(String filePath) throws IOException{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path srcPath = new Path(filePath); InputStream in = null; try { in = fs.open(srcPath); IOUtils.copyBytes(in, System.out, 4096, false); // } finally { IOUtils.closeStream(in); } } public static void main(String[] args) throws IOException { // //uploadFile("D:\\c.txt", "/user/hadoop/test/"); // /*byte[] contents = "hello world
".getBytes(); createFile("/user/hadoop/test1/d.txt",contents);*/ // //rename("/user/hadoop/test/d.txt", "/user/hadoop/test/dd.txt"); // //delete("test/dd.txt"); // //delete("test1"); // // //mkdir("test1"); // readFile("test1/d.txt"); } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기