2013-05-17 2 views
1

그래서 Hadoop의 파일 시스템을 사용하고 있으며 경로를 사용하여 해당 파일 시스템을 일부 업데이트해야합니다. 이 파일 시스템에는 다른 txt 형식의 파일이 있습니다. 경로를 사용하여 해당 파일을 가져올 수 있습니다. 아래는 BufferedReader를 사용하여 Hadoop에서 텍스트 파일을 읽을 수 있지만 아직 테스트되지 않은 것입니다.Hadoop에서 파일 시스템을 업데이트하거나 쓰는 방법은 무엇입니까?

fs = FileSystem.get(URI.create(path), conf); 
Path pt = new Path(out + "/" + name + ".txt"); 
BufferedReader each_br = new BufferedReader(new InputStreamReader(fs.open(pt))); 

나는 경로를 사용하여 특정 파일에 기록합니다. 나는 그것을 알아낼 수 없었다. 어떤 아이디어?

감사합니다,

+0

먼저 HDFS 또는 로컬 디렉토리에 쓰기를 시도하고 있습니까? – greedybuddha

+0

HDFS에 쓰고 S3에 복사하십시오. – c0mrade

+0

이 참조 http://bigdataspeak.wordpress.com/2013/04/05/how-to-write-a-file-in-hdfs-using-hadoop/ – Amar

답변

4

당신이 이미 가지고있는 아래로 읽기, 쓰기는 간단합니다. 당신은 표준 자바의 BufferedWriter를 얻을 것이다

fs = FileSystem.get(URI.create(path), conf); 
FSDataOutputStream out = fs.create(new Path("myOutFile")); 
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out)); 

. 그걸로부터 당신은 당신이 원하는 무엇이든 할 수 있어야합니다.

+3

+1, 그냥'create (Path)' 파일이 이미 존재하는 경우 예외를 throw합니다. 파일을 덮어 쓰려면 대신 –

+0

@ createWhite (create (Path, true)) 메서드 호출을 사용하십시오. create (Path, true)를 사용하더라도 추가하지 않습니다. 파일. 덮어 쓰기. 나는 무엇을 추가해야합니까? – Srivathsa

+1

@Srivathsa 당신의 hadoop과 파일 시스템의 버전에 따라, appending이 지원되지 않을 수도 있습니다. 그렇다면, fs.append - http://hadoop.apache.org/docs/r1.2.0/api/를 사용해야합니다. org/apache/hadoop/fs/FileSystem.html # append (org.apache.hadoop.fs.Path) –

관련 문제