hadoop javaapi 폴더의 데이터 읽기
2779 단어 토대
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URI;
코드:
복사하여 붙여넣기만 하면 됩니다.
output과 input을 바꾸면 사용할 수 있습니다. 파일을 읽으려면readHdfsFile () 방법을 사용하십시오.
public class HdfsApp {
private static String output="F:/Tags/jiemianshouye";
private static String input="hdfs://192.168.163.120:8020/user/hive/external/jiemianhomepage/dt=2018-12-12";
private static FileSystem getFileSystem(String direPath)throws Exception{
Configuration configuration = new Configuration();
FileSystem fileSystem = FileSystem.get(URI.create(direPath),configuration);
return fileSystem;
}
private static void readHdfsFile(String filePath){
FSDataInputStream fsDataInputStream=null;
try {
Path path = new Path(filePath);
fsDataInputStream = getFileSystem(filePath).open(path);
OutputStream out = new FileOutputStream(output,true);
IOUtils.copyBytes(fsDataInputStream,out,4096,false);
}catch (Exception e){
e.printStackTrace();
}finally {
if(fsDataInputStream != null){
IOUtils.closeStream(fsDataInputStream);
}
}
}
public static void getDirectoryFromHdfs(String direPath) throws Exception {
FileSystem fs = getFileSystem(direPath);
FileStatus[] filelist = fs.listStatus(new Path(direPath));
for (int i = 0; i < filelist.length; i++) {
System.out.println("_________________ " + i + " " + "____________________");
FileStatus fileStatus = filelist[i];
System.out.println("Name:" + fileStatus.getPath().getName());
System.out.println("Path:" + fileStatus.getPath());
readHdfsFile(fileStatus.getPath().toString());
System.out.println("size:" + fileStatus.getLen());
System.out.println("_________________ " + i + " " + "____________________");
}
fs.close();
}
public static void main(String[] args) throws Exception{
HdfsApp hdfsApp = new HdfsApp();
//hdfsApp.readHdfsFile("/user/data/JMRecommend/data-20181205-1/news/vectorize");
///user/hive/external/jiemianhomepage/dt=2018-12-12
getDirectoryFromHdfs(input);
// String inPath="D://workSpace/src/main/resources/hdfs-site.xml";
// String outPath="hdfs://ns/user/kfk/data/local.xml";
//hdfsApp.writeHdfsFile(inPath,outPath);
}
}
필요하신 분들께 도움이 됐으면 좋겠습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[파이썬 기초] 파이썬의 특수한 방법을 이해하고 코드를 읽어주세요!이번에는 파이톤의'특별한 방법'에 대한 해설을 진행한다. 나는 파이톤의 실제 업무에서 다른 사람이 쓴 코드를 자주 읽는다. 익숙하지 않으면 무엇을 하고 있는지 모르지만 시간만 지나갈 수 있다. 이런 상황을 방지하기 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.