음
이거 하면서 ls가 listStatus의 약자구나............... 했따.....................ㅎ
역시 코딩초딩 + "ls가 뭐에요?"
나는 진정 ls도 모르는 사람이었어. 하. 하하하.
각설하고,
1 2 3 4 5 6 7 8 9 10 11 12 13 | import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; Configuration conf = new Configuration(); conf.set("fs.default.name", "hdfs://" + host + ":9000"); FileSystem fs = FileSystem.get(conf); FileStatus[] status = fs.listStatus(new Path("내가알고싶은디렉토리")); |
머 대충 위와 같은 식으로..
$ hadoop fs -ls "내가알고싶은디렉토리"
와 같은 걸 할 수 있다.
FileStatus배열에 들어온 것들을 보면 와우다 정말. 와우! 깔끔! 멋짐! 알러뷰!
config()를 init 하는데 에러가 나서 보니 commons-configuration-1.6.jar 가 있어야 한다. 깨알 에러노트.
이제는
$ hadoop fs -cat "타겟파일"
을 해 볼꺼다! 값은 뭐 알아서 잘... 나는 개행문자로 라인 구분해서 스트링에 담아버렸다. 그렇게 해달라고 하길래 그렇게 해줌
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 쭉 가져온 status배열 중에 i번째 파일을 cat 해 볼까? String filename = status[i].getPath().getName(); FSDataInputStream is = fs.open(new Path(path.next().toString())); is.seek(offset); //요론식으로 int offset을 주면 거기부터 읽어올 수도 있다. 헷. BufferedReader br = new BufferedReader(new InputStreamReader(is)); line=br.readLine(); while (line != null){ lines = lines.concat(line+"\n"); line=br.readLine(); //떠나갈 때를 아는 자의 뒷모습은 얼마나 아름다운가. 분분한 낙화... //offset부터 일정한 length를 읽고싶었다면 적절한 때 끝내자. if(enoughLength) { lines = (String)lines.subSequence(0, lines.length()-1); break; } } br.close(); |
^^ 내가 마지막 개행문자를 지워줄라고 어떤 또라이 짓을 했는지를 보자. 17번째 라인이다. 다행이네. 다음라인이었으면 정말 환상적이야!!! 하고 감동할뻔 했다!!!!!
올린 코드는 상당히 간추린거고 사실 원시데이터의 이름을 인자로 받아오는 함수를 구현했다. ..
원시 데이터를 하둡에 저장할 때 tailing 하여 저장하기 때문에 하둡에는 조각난 파일들이 들어있다 ^^
게다가 flume을 이용하여 flume-hdfs-sink를 활용 -> 설정 몇개로 하둡에 백업하려 했던 내겐.. 짜증나는 요구사항이었다.
flume-hdfs-sink를 활용하는 방법은... 주제를 벗어나므로...(나름 챙긴다^^ 두서없는 나의 글이지만... ㅎㅎ)
여기에.
'춤추는 프로그래머 > Big Data' 카테고리의 다른 글
Sorting FileStatus[]/정렬하기 (0) | 2013.12.20 |
---|---|
flume-hdfs-sink / flume-hdfs-conf.properties (0) | 2013.12.18 |
ElasticSearch로 검색 Paging하기... (scan type) (0) | 2013.12.18 |
MongoDB 설치기 (0) | 2013.12.16 |
ElasticSearch에서 인덱스의 상태 정보 가져오기 (인덱스 사이즈, 문서 개수) (0) | 2013.07.10 |