[HADOOP] 자바로 hdfs에 파일 쓰기
HADOOP자바로 hdfs에 파일 쓰기
HDFS에 파일을 만들고 그 안에 데이터를 쓰려고합니다. 나는이 코드를 사용했다 :
Configuration config = new Configuration();
FileSystem fs = FileSystem.get(config);
Path filenamePath = new Path("input.txt");
try {
if (fs.exists(filenamePath)) {
fs.delete(filenamePath, true);
}
FSDataOutputStream fin = fs.create(filenamePath);
fin.writeUTF("hello");
fin.close();
}
파일을 생성하지만 파일에 아무 것도 쓰지 않습니다. 나는 많이 찾았지만 아무것도 찾지 못했습니다. 내 문제는 무엇인가? HDFS로 쓸 수있는 허가가 필요합니까?
감사.
해결법
-
==============================
1.@ Tariq의 asnwer 대신에 파일 시스템을 가져올 때 URI를 전달할 수있다.
@ Tariq의 asnwer 대신에 파일 시스템을 가져올 때 URI를 전달할 수있다.
Configuration configuration = new Configuration(); FileSystem hdfs = FileSystem.get( new URI( "hdfs://localhost:54310" ), configuration ); Path file = new Path("hdfs://localhost:54310/s2013/batch/table.html"); if ( hdfs.exists( file )) { hdfs.delete( file, true ); } OutputStream os = hdfs.create( file, new Progressable() { public void progress() { out.println("...bytes written: [ "+bytesWritten+" ]"); } }); BufferedWriter br = new BufferedWriter( new OutputStreamWriter( os, "UTF-8" ) ); br.write("Hello World"); br.close(); hdfs.close();
-
==============================
2.Hadoop 구성 폴더에 HADOOP_CONF_DIR 환경 변수를 정의하거나 코드에 다음 두 줄을 추가하십시오.
Hadoop 구성 폴더에 HADOOP_CONF_DIR 환경 변수를 정의하거나 코드에 다음 두 줄을 추가하십시오.
config.addResource(new Path("/HADOOP_HOME/conf/core-site.xml")); config.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml"));
이 항목을 추가하지 않으면 클라이언트가 로컬 FS에 쓰기를 시도하므로 권한 거부 예외가 발생합니다.
-
==============================
3.아래의 방법을 사용해보십시오.
아래의 방법을 사용해보십시오.
FileSystem fs = path.getFileSystem(conf); SequenceFile.Writer inputWriter = new SequenceFile.Writer(fs, conf, path, LongWritable.class, MyWritable.class); inputWriter.append(new LongWritable(uniqueId++), new MyWritable(data)); inputWriter.close();
from https://stackoverflow.com/questions/16000840/write-a-file-in-hdfs-with-java by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] SparkSQL에서 Hive 메타 스토어에 프로그래밍 방식으로 연결하는 방법 (0) | 2019.05.27 |
---|---|
[HADOOP] Map Reduce Programming의 감속기에서 단계를 셔플하고 정렬하는 목적은 무엇입니까? (0) | 2019.05.27 |
[HADOOP] hadoop scheme : file에 대한 FileSystem 없음 (0) | 2019.05.27 |
[HADOOP] 컨테이너가 메모리 제한을 초과하여 실행 중입니다. (0) | 2019.05.27 |
[HADOOP] Spark : 코어 수를 조정할 때 성능이 일치하지 않습니다. (0) | 2019.05.27 |