보통 output 파일은 하나로 나와야 하나, 병렬처리를 하다보면 병목현상을 줄이기 위해 output 파일을 여러개로 만들기도 하는데.
최종 처리를 하기 위해 하나의 파일로 합치는 게 필요할 수도 있다.
HDFS에서 파일을 합치는 것은 어떻게 할 수 있을까?
HDFS FileSystemShell 가이드에 보면 getmerge라는 command가 존재한다.
getmergeUsage: hadoop fs -getmerge <src> <localdst> [addnl] Takes a source directory and a destination file as input and concatenates files in src into the destination local file. Optionally addnl can be set to enable adding a newline character at the end of each file. |
위처럼 소개하고 있다.
HDFS 내의 파일을 merge해서 local 에 파일을 생성하는 command 이다.
위처럼 파일이 4개가 존재할 경우 part-00000 과 part-00001 두 파일만 합쳐보자.
hadoop dfs -getmerge /README2/part* /home1/irteam/README2.txt |
로컬에 약 3.6KB 파일이 생성되었음을 확인할 수 있다.
즉, part-00000과 part-00001 두 파일이 잘 merge 되었음을 확인할 수 있다.(파일내용도 확인해보면 잘 합쳐져있다.)
그런데 여기서 궁금증이 든다.
HDFS 내에 파일을 합치고자 할 때는 local 이 아닌 HDFS 에 파일을 생성하고 싶다.
하지만 hadoop dfs -help 를 실행해보면 hdsf -> merge -> hdfs 를 할 수 있는 command가 없다.
만약 이렇게 하고 싶다면, local 에 파일을 hdfs 다시 copy해야 한다.
예를 들면, hadoop dfs -copyFromLocal /home1/irteam/README2.txt /README2/README2.txt 이렇게 수행해 볼 수 있을 것이다.
'BigData > Hadoop' 카테고리의 다른 글
HDFS 네임노드에서 metadata size 한계는 어떻게 될까? (0) | 2017.04.24 |
---|---|
[하둡완벽가이드] 3장 HDFS (0) | 2017.04.19 |
Hadoop shell 사용법 (0) | 2016.02.10 |
Hadoop 에서 작은 크기의 파일을 처리하는 방법 (0) | 2016.02.10 |
HDFS 내에 있는 파일에 Append 하기 (0) | 2015.05.20 |