자바 API Hadoop HDFS 작업 실현
23802 단어 빅 데이터
<dependency>
<groupId>org.apache.hadoopgroupId>
<artifactId>hadoop-commonartifactId>
<version>2.7.3version>
dependency>
<dependency>
<groupId>org.apache.hadoopgroupId>
<artifactId>hadoop-hdfsartifactId>
<version>2.7.3version>
dependency>
<dependency>
<groupId>org.apache.hadoopgroupId>
<artifactId>hadoop-clientartifactId>
<version>2.7.3version>
dependency>
2, Java API
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* HDFS
*/
public class HDFSUtil {
/**
*
* @param conf
* @param path
* @throws IOException
*/
public static void mkdir(Configuration conf, String path) throws IOException {
FileSystem fs = FileSystem.get(conf);
fs.mkdirs(new Path(path));
fs.close();
}
/**
*
* @param conf
* @param path
* @throws IOException
*/
public static void delete(Configuration conf, String path) throws IOException {
FileSystem fs = FileSystem.get(conf);
fs.delete(new Path(path), true); // true ,
fs.close();
}
/**
*
* listFiles , 。
* @param conf
* @param path
* @return
* @throws IOException
*/
public static List<LocatedFileStatus> fileList(Configuration conf, String path) throws IOException {
FileSystem fs = FileSystem.get(conf);
RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(path), true); // true
List<LocatedFileStatus> resultList = new ArrayList<>();
while (iterator.hasNext()) {
LocatedFileStatus locatedFileStatus = iterator.next();
resultList.add(locatedFileStatus);
}
fs.close();
return resultList;
}
/**
*
* listStatus , 。 。
* @param conf
* @param path
* @return
* @throws IOException
*/
public static List<FileStatus> fileList2(Configuration conf, String path, List<FileStatus> resultList) throws IOException {
FileSystem fs = FileSystem.get(conf);
FileStatus[] fileStatus = fs.listStatus(new Path(path));
if (resultList == null) {
resultList = new ArrayList<>();
}
for(FileStatus s : fileStatus) {
//
if (s.isDirectory()) {
//System.out.println(" :" + s.getPath());
fileList2(conf, s.getPath().toUri().getPath(), resultList);
} else {
//System.out.println(" :" + s.getPath());
resultList.add(s);
}
}
fs.close();
return resultList;
}
/**
*
* @param conf
* @param filePath
* @param hdfsPath
* @throws IOException
*/
public static void upload(Configuration conf, String filePath, String hdfsPath) throws IOException {
FileSystem fs = FileSystem.get(conf);
/*InputStream input = new FileInputStream(filePath);
OutputStream out = fs.create(new Path(hdfsPath));
IOUtils.copyBytes(input, out, 1024);*/
fs.copyFromLocalFile(new Path(filePath), new Path(hdfsPath));
}
/**
*
* @param conf
* @param hdfsPath
* @param savePath
* @throws IOException
*/
public static void download(Configuration conf, String hdfsPath, String savePath) throws IOException {
FileSystem fs = FileSystem.get(conf);
/*InputStream input = fs.open(new Path(hdfsPath));
OutputStream out = new FileOutputStream(savePath);
IOUtils.copyBytes(input, out, 1024);*/
fs.copyToLocalFile(new Path(hdfsPath), new Path(savePath));
}
public static void main(String[] args) throws IOException {
//
System.setProperty("HADOOP_USER_NAME","root");
//System.setProperty(" hadoop.home.dir","D:\\hadoop-2.7.3");
// , NameNode
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://10.1.255.121:9000");
//
conf.set("dfs.blocksize","256m");
//
conf.set("dfs.replication","2");
//mkdir(conf, "/abc12323");
//delete(conf, "/test");
//upload(conf, "E:/jar/fastjson-1.2.7.jar", "/abc123/fastjson-1.2.7.jar");
//download(conf, "/2020/a.txt", "E:/test/a.txt");
/*List list = fileList(conf, "/");
for (LocatedFileStatus locatedFileStatus: list) {
System.out.println(locatedFileStatus.getPath());
}*/
/* System.out.println("----------------");
List list2 = fileList2(conf, "/", null);
for(FileStatus s : list2) {
System.out.println(s.getPath());
}*/
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.