HDFS 의 고급 API 조작 각종 자바 조작 demo [전재]
28436 단어 Hadoop 시리즈Java
원본 링크:https://www.cnblogs.com/frankdeng/p/9061449.html
HDFS 클 라 이언 트 환경 준비 1.1 jar 패키지 준비 1) hadop - 2.7.6. tar. gz 에서 비 중국어 디 렉 터 리 로 압축 풀기
2) share 폴 더 에 들 어가 모든 jar 가방 을 찾 아 jar 가방 을 복사lib 폴 더 아래
3) 모든 jar 가방 에서 sources. jar 를 찾 아 잘라 서source 폴 더.
4) 모든 jar 가방 에서 tests. jar 를 찾 아 잘라 서테스트 폴 더
1.2 Eclipse 준비 1) 자신의 컴퓨터 운영 체제 에 따라 컴 파일 된 hadop jar 를 중국어 가 아 닌 경로 로 패키지 합 니 다 (예 를 들 어 E:\02 software\hadop - 2.7.6).(유효 하지 않 으 면 eclipse 를 다시 시작 합 니 다)
2) HADOOP 설정HOME 환경 변수
3) 첫 번 째 자바 프로젝트 HdfsClient Demo 1 만 들 기
4) lib 폴 더 를 만 들 고 jar 패 키 지 를 추가 합 니 다.
5) 패키지 생 성, HdfsClient 테스트 클래스
public class HdfsClient {
//
public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
// 1
Configuration configuration = new Configuration();
//
// configuration.set("fs.defaultFS", "hdfs://node21:9000");
// FileSystem fs = FileSystem.get(configuration);
FileSystem fs = FileSystem.get(new URI("hdfs://node21:9000"), configuration, "admin");
// 2
fs.copyFromLocalFile(new Path("e:/hello.txt"), new Path("/hello2.txt"));
// 3
fs.close();
System.out.println("over");
}
}
6) 실행 프로그램
실행 할 때 사용자 이름 을 설정 해 야 합 니 다. 클 라 이언 트 가 hdfs 를 조작 할 때 사용자 신분 이 있 습 니 다.기본적으로 hdfs 클 라 이언 트 api 는 jvm 에서 사용자 신분 으로 인 자 를 가 져 옵 니 다: - DADOOPUSER_NAME = admin, admin 은 사용자 이름 입 니 다.
7) 메모: eclipse 에서 로 그 를 출력 하지 못 하면 콘 솔 에 만 표 시 됩 니 다.
1.log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell). 2.log4j:WARN Please initialize the log4j system properly. 3.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 프로젝트 의 src 디 렉 터 리 에 'log4j. properties' 라 는 이름 으로 파일 을 새로 만들어 야 합 니 다.
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=target/spring.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n 2 HDFS 의 고급 API 프로 그래 밍 2.1 HDFS 파일 업로드 (테스트 매개 변수 우선 순위) 1. 코드
@Test
public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {
// 1
Configuration configuration = new Configuration();
configuration.set("dfs.replication", "2");
FileSystem fs = FileSystem.get(new URI("hdfs://node21:9000"), configuration, "admin");
// 2
fs.copyFromLocalFile(new Path("e:/hello.txt"), new Path("/hello5.txt"));
// 3
fs.close();
System.out.println("over");
}
2. hdfs - site. xml 을 프로젝트 의 루트 디 렉 터 리 에 복사
dfs.replication
1
3. 테스트 매개 변수 우선 순위
매개 변수 우선 순위: (1) 클 라 이언 트 코드 에 설 치 된 값 > (2) classpath 의 사용자 정의 프로필 > (3) 그리고 서버 의 기본 설정 2.2 파일 의 업로드 와 다운로드
package com.xyg.hdfs.api;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFS_GET_AND_PUT {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node21:9000");
conf.set("dfs.replication", "2");
FileSystem fs = FileSystem.get(conf);
/**
* :
* 1、 hadoop
* VM arguments ; -DHADOOP_USER_NAME=admin
* 2、
* System.setProperty("HADOOP_USER_NAME", "admin");
*/
System.setProperty("HADOOP_USER_NAME", "admin");
//
fs.copyFromLocalFile(new Path("c:/sss.txt"), new Path("/a/ggg.txt"));
/**
* .crc :
* : qqq.txt blk_41838 : 0 - 1100byte
* 。 。
* , 0 -1100 。 CRC , HDFS
* 。HDFS 。
*/
//
fs.copyToLocalFile(new Path("/a/qqq.txt"), new Path("c:/qqq3.txt"));
/**
* API : FileUtil.copy(....)
*/
fs.close();
}
}
2. 프로필 conf
package com.xyg.hdfs;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
public class TestConf1 {
public static void main(String[] args) throws Exception {
/**
* :
*
* core-default.xml
* hdfs-default.xml
* mapred-default.xml
* yarn-default.xml
*/
Configuration conf = new Configuration();
// conf.addResource("hdfs-default.xml");
/**
* hdfs-site.xml src 。 classpath 。
* FS , hdfs-site.xml name-value conf
* :
* 1、 hdfs-site.xml src , ???
* 2、 hdfs-default.xml hdsf-site.xml ???
* :
* , -default.xml -site.xml
* src
*
* , src , :
* conf
*/
// conf.addResource("hdfs-site.xml");
conf.set("dfs.replication", "1");
conf.addResource("myconfig/hdfs-site.xml");
/**
* :
* 1、 core/hdfs/mapred/yarn-default.xml
* 2、 conf.addResources()
* 3、 conf.set(name, value)
*/
FileSystem fs = FileSystem.get(conf);
System.out.println(conf.get("dfs.replication"));
Iterator> iterator = conf.iterator();
while(iterator.hasNext()){
Entry e = iterator.next();
System.out.println(e.getKey() + "\t" + e.getValue());
}
}
}
출력 결과
View Code 3, 지정 한 디 렉 터 리 에 있 는 파일 과 블록 에 대한 정 보 를 보 여 줍 니 다.
package com.xyg.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
public class TestHDFS1 {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", "admin");
conf.set("fs.defaultFS", "hdfs://node21:9000");
FileSystem fs = FileSystem.get(conf);
/**
*
*/
RemoteIterator listFiles = fs.listFiles(new Path("/"), true);
while(listFiles.hasNext()){
LocatedFileStatus file = listFiles.next();
System.out.println(file.getPath()+"\t");
System.out.println(file.getPath().getName()+"\t");
System.out.println(file.getLen()+"\t");
System.out.println(file.getReplication()+"\t");
/**
* blockLocations ? ?
*
*
*/
BlockLocation[] blockLocations = file.getBlockLocations();
System.out.println(blockLocations.length+"\t");
for(BlockLocation bl : blockLocations){
String[] hosts = bl.getHosts();
System.out.print(hosts[0] + "-" + hosts[1]+"\t");
}
System.out.println();
}
}
}
출력 결과
hdfs://hadoop1:9000/aa/bb/cc/hadoop.tar.gz hadoop.tar.gz 199007110 2 3 hadoop3-hadoop1 hadoop1-hadoop2 hadop 1 - hadop 4, 파일 업로드
package com.xyg.hdfs;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.hadoop.conf.Configuration;
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 UploadDataByStream {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", "admin");
conf.set("fs.defaultFS", "hdfs://node21:9000");
FileSystem fs = FileSystem.get(conf);
InputStream in = new FileInputStream(new File("d:/abc.tar.gz"));
FSDataOutputStream out = fs.create(new Path("/aa/abc.tar.gz"));
IOUtils.copyBytes(in, out, 4096, true);
fs.close();
}
}
5. 파일 다운로드
package com.xyg.hdfs;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class DownloadDataByStream {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", "admin");
conf.set("fs.defaultFS", "hdfs://node21:9000");
FileSystem fs = FileSystem.get(conf);
FSDataInputStream in = fs.open(new Path("/aa/abc.tar.gz"));
OutputStream out = new FileOutputStream(new File("D:/abc.sh"));
IOUtils.copyBytes(in, out, 4096, true);
fs.close();
}
}
6. 특정한 경로 에서 특정한 유형의 파일 을 삭제 합 니 다. 예 를 들 어 class 형식 파일, 예 를 들 어 txt 형식 파일 등 입 니 다.
package com.xyg.hdfs;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFS_DELETE_CLASS {
public static final String FILETYPE = "tar.gz";
public static final String DELETE_PATH = "/aa";
public static void main(String[] args) throws Exception {
new HDFS_DELETE_CLASS().rmrClassFile(new Path(DELETE_PATH));
}
public void rmrClassFile(Path path) throws Exception{
// , FileSystem fs
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://node2:9000"), conf, "admin");
// path
FileStatus fileStatus = fs.getFileStatus(path);
boolean directory = fileStatus.isDirectory();
//
if(directory){
//
checkAndDeleteDirectory(path, fs);
}else{
// , FILETYPE
checkAndDeleteFile(path, fs);
}
}
//
public static void checkAndDeleteDirectory(Path path, FileSystem fs) throws Exception{
// path
FileStatus[] listStatus = fs.listStatus(path);
for(FileStatus fStatus: listStatus){
Path p = fStatus.getPath();
// , FILETYPE , ,
if(fStatus.isFile()){
checkAndDeleteFile(p, fs);
}else{
checkAndDeleteDirectory(p, fs);
}
}
}
// , ,
public static void checkAndDeleteFile(Path path, FileSystem fs) throws Exception{
String name = path.getName();
System.out.println(name);
/*// FILETYPE , , , FILETYPE
if(name.indexOf(FILETYPE) != -1){
fs.delete(path, true);
}*/
// FILETYPE
int startIndex = name.length() - FILETYPE.length();
int endIndex = name.length();
//
String fileSuffix = name.substring(startIndex, endIndex);
if(fileSuffix.equals(FILETYPE)){
fs.delete(path, true);
}
}
}
7. HDFS 클 러 스 터 의 모든 빈 파일 과 빈 디 렉 터 리 삭제
public class DeleteEmptyDirAndFile {
static FileSystem fs = null;
public static void main(String[] args) throws Exception {
initFileSystem();
//
// makeTestData();
//
// deleteTestData();
//
deleteEmptyDirAndFile(new Path("/aa"));
}
/**
*
* @throws Exception
*/
public static void deleteEmptyDirAndFile(Path path) throws Exception {
//
FileStatus[] listStatus = fs.listStatus(path);
if(listStatus.length == 0){
fs.delete(path, true);
return;
}
// :
RemoteIterator listLocatedStatus = fs.listLocatedStatus(path);
while (listLocatedStatus.hasNext()) {
LocatedFileStatus next = listLocatedStatus.next();
Path currentPath = next.getPath();
//
Path parent = next.getPath().getParent();
// , , ( )
if (next.isDirectory()) {
//
if(fs.listStatus(currentPath).length == 0){
//
fs.delete(currentPath, true);
}else{
// ,
if(fs.exists(currentPath)){
deleteEmptyDirAndFile(currentPath);
}
}
//
} else {
//
long fileLength = next.getLen();
// ,
if(fileLength == 0){
fs.delete(currentPath, true);
}
}
// , ,
// , ,
int length = fs.listStatus(parent).length;
if(length == 0){
fs.delete(parent, true);
}
}
}
/**
* FileSystem
*/
public static void initFileSystem() throws Exception{
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", "admin");
conf.addResource("config/core-site.xml");
conf.addResource("config/hdfs-site.xml");
fs = FileSystem.get(conf);
}
/**
*
*/
public static void makeTestData() throws Exception {
String emptyFilePath = "D:\\bigdata\\1704mr_test\\empty.txt";
String notEmptyFilePath = "D:\\bigdata\\1704mr_test\
otEmpty.txt";
//
String path1 = "/aa/bb1/cc1/dd1/";
fs.mkdirs(new Path(path1));
fs.mkdirs(new Path("/aa/bb1/cc1/dd2/"));
fs.copyFromLocalFile(new Path(emptyFilePath), new Path(path1));
fs.copyFromLocalFile(new Path(notEmptyFilePath), new Path(path1));
//
String path2 = "/aa/bb1/cc2/dd2/";
fs.mkdirs(new Path(path2));
fs.copyFromLocalFile(new Path(emptyFilePath), new Path(path2));
//
String path3 = "/aa/bb2/cc3/dd3";
fs.mkdirs(new Path(path3));
fs.copyFromLocalFile(new Path(notEmptyFilePath), new Path(path3));
//
String path4 = "/aa/bb2/cc4/dd4";
fs.mkdirs(new Path(path4));
System.out.println(" ");
}
/**
*
* @throws Exception
*/
public static void deleteTestData() throws Exception {
boolean delete = fs.delete(new Path("/aa"), true);
System.out.println(delete ? " " : " ");
}
}
8. 특정한 데이터 블록 을 수 동 으로 복사 합 니 다 (예 를 들 어 특정한 파일 의 두 번 째 데이터 블록)
/**
* ( )
* */
public static void copyBlock(String str,int num) {
Path path = new Path(str);
BlockLocation[] localtions = new BlockLocation[0] ;
try {
FileStatus fileStatus = fs.getFileStatus(path);
localtions = fs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());
/*for(int i=0;i
9. 프로그램 을 작성 하여 HDFS 파일 시스템 의 파일 크기 가 HDFS 클 러 스 터 의 기본 블록 크기 보다 작은 파일 비례 를 통계 합 니 다.
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
/**
* HDFS HDFS
* : 128M 98, 128M 2, 2%
*/
public class Exam1_SmallFilePercent {
private static int DEFAULT_BLOCKSIZE = 128 * 1024 * 1024;
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node21:9000");
System.setProperty("HADOOP_USER_NAME", "admin");
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/");
float smallFilePercent = getSmallFilePercent(fs, path);
System.out.println(smallFilePercent);
fs.close();
}
/**
*
* @throws Exception
*/
private static float getSmallFilePercent(FileSystem fs, Path path) throws Exception {
// TODO Auto-generated method stub
int smallFile = 0;
int totalFile = 0;
RemoteIterator listFiles = fs.listFiles(path, false);
while(listFiles.hasNext()){
totalFile++;
LocatedFileStatus next = listFiles.next();
long len = next.getLen();
if(len < DEFAULT_BLOCKSIZE){
smallFile++;
}
}
System.out.println(smallFile+" : "+totalFile);
return smallFile * 1f /totalFile;
}
}
10. 프로그램 을 작성 하여 HDFS 파일 시스템 의 평균 데이터 블록 수 (데이터 블록 총수/파일 총수) 를 통계 합 니 다.
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
/**
* HDFS ( / )
* : 5 , 3 , 4
* , 1 , HDFS 3
*/
public class Exam2_HDSFAvgBlocks {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node21:9000");
System.setProperty("HADOOP_USER_NAME", "admin");
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/");
float avgHDFSBlocks = getHDFSAvgBlocks(fs, path);
System.out.println("HDFS :" + avgHDFSBlocks);
fs.close();
}
/**
*
*/
private static float getHDFSAvgBlocks(FileSystem fs, Path path) throws Exception {
// TODO Auto-generated method stub
int totalFiles = 0; //
int totalBlocks = 0; //
RemoteIterator listFiles = fs.listFiles(path, false);
while(listFiles.hasNext()){
LocatedFileStatus next = listFiles.next();
int length = next.getBlockLocations().length;
totalBlocks += length;
if(next.getLen() != 0){
totalFiles++;
}
}
System.out.println(totalBlocks+" : "+totalFiles);
return totalBlocks * 1f / totalFiles;
}
}
11. 작성 자 는 HDFS 파일 시스템 의 평균 사본 수 (사본 총수/총 데이터 블록 수) 를 집계 합 니 다.
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
/**
* HDFS ( / )
* : , 5 , 3 , 2 , 2 , = (3*3 + 2*2)/(3+2)= 2.8
*/
public class Exam3_HDSFAvgBlockCopys {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node21:9000");
System.setProperty("HADOOP_USER_NAME", "admin");
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/");
float avgHDFSBlockCopys = getHDFSAvgBlockCopys(fs, path);
System.out.println("HDFS :" + avgHDFSBlockCopys);
fs.close();
}
/**
*
*/
private static float getHDFSAvgBlockCopys(FileSystem fs, Path path) throws Exception {
// TODO Auto-generated method stub
int totalCopy = 0; //
int totalBlocks = 0; //
RemoteIterator listFiles = fs.listFiles(path, false);
while(listFiles.hasNext()){
LocatedFileStatus next = listFiles.next();
int length = next.getBlockLocations().length;
short replication = next.getReplication();
totalBlocks += length;
totalCopy += length * replication;
}
System.out.println(totalCopy+" : "+totalBlocks);
return totalCopy * 1f / totalBlocks;
}
}
12. HDFS 전체 파일 시스템 에서 지정 한 데이터 블록 크기 가 부족 한 데이터 블록 의 비율 을 통계 합 니 다.
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
/**
* HDFS
* 128M, 100 , 128M 5 , 5%
* : 。 128M
*/
public class Exam4_LTBlockSize {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node21:9000");
System.setProperty("HADOOP_USER_NAME", "admin");
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/");
float avgHDFSBlockCopys = getLessThanBlocksizeBlocks(fs, path);
System.out.println("HDFS :" + avgHDFSBlockCopys);
fs.close();
}
private static float getLessThanBlocksizeBlocks(FileSystem fs, Path path) throws Exception {
// TODO Auto-generated method stub
int totalBlocks = 0; //
int lessThenBlocksizeBlocks = 0; //
RemoteIterator listFiles = fs.listFiles(path, false);
while(listFiles.hasNext()){
LocatedFileStatus next = listFiles.next();
BlockLocation[] blockLocations = next.getBlockLocations();
int length = blockLocations.length;
if(length != 0){
totalBlocks += length;
long lastBlockSize = blockLocations[length - 1].getLength();
long blockSize = next.getBlockSize();
if(lastBlockSize < blockSize){
lessThenBlocksizeBlocks++;
}
}
}
System.out.println(lessThenBlocksizeBlocks+" : "+totalBlocks);
return lessThenBlocksizeBlocks * 1f / totalBlocks;
}
}
13. 주어진 배열 의 저수 총량 을 통계 한다. (배열 의 모든 위치 수 를 지세 의 높 고 낮 음 으로 본다)
/**
( )
:int[] intArray = new int[]{4,3,2,5,6,4,4,7}
:[0,1,2,0,0,2,2,0] :7
: 01 , 01 , 01 0 ( 1 0 )
*/
public class Exam5_WaterStoreOfArray {
public static void main(String[] args) {
// int[] intArray = new int[]{4,3,2,5,6,4,4,7};
// int[] intArray = new int[]{1,2,3,4,5,6};
int[] intArray = new int[]{3,1,2,7,3,8,4,9,5,6};
int totalWater = getArrayWater(intArray);
System.out.println(totalWater);
}
/**
*
*/
private static int getArrayWater(int[] intArray) {
int findMaxValueOfArray = findMaxValueOfArray(intArray);
int findMinValueOfArray = findMinValueOfArray(intArray);
int length = intArray.length;
int totalWater = 0;
//
for(int i=findMinValueOfArray; i i){
tempArray[j] = 1;
}else{
tempArray[j] = 0;
}
}
// 01 0
int waterOfOneZeroArray = getWaterOfOneZeroArray(tempArray);
totalWater += waterOfOneZeroArray;
}
return totalWater;
}
/**
* : 1, 1 0 ,
*/
private static int getWaterOfOneZeroArray(int[] tempArray) {
int length = tempArray.length;
int toatalWater = 0;
// 1
int i = 0;
while(i < length){
if(tempArray[i] == 1){
break;
}
i++;
}
// 1
int j=length-1;
while(j >= i){
if(tempArray[j] == 1){
break;
}
j--;
}
// 1 0 。
if(i == j || i + 1 == j){
return 0;
}else{
for(int k=i+1; k max){
max = intArray[i];
}
}
return max;
}
}
/**
*
*/
public static int findMinValueOfArray(int[] intArray){
int length = intArray.length;
if(length == 0){
return 0;
}else if(length == 1){
return intArray[0];
}else{
int min = intArray[0];
for(int i=1; i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDFS 의 고급 API 조작 각종 자바 조작 demo [전재]1.2 Eclipse 준비 1) 자신의 컴퓨터 운영 체제 에 따라 컴 파일 된 hadop jar 를 중국어 가 아 닌 경로 로 패키지 합 니 다 (예 를 들 어 E:\02 software\hadop - 2.7.6)....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.