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");
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.