본문 바로가기

Computer/Etc

hdfs 파일 라인 수 계산하기

일단 내가 아는 방법


hadoop fs -cat <input_path> | wc -l


이렇게 세면 한참 걸린다...


그래서 찾아본 방법


1.  MR로 라인 수 계산하고, 

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar -Dmapred.reduce.tasks=100 -input <input_path> -output <output_path> -mapper /bin/cat -reducer "wc -l"


이렇게 하면 MR을 사용해서 라인을 계산하게 된다.

이렇게 계산된 파일은 local로 다시 받아와서, awk를 이용해서 계산하면 된다.


2. hdfs 상에 계산된 파일을 local로 복사

hadoop fs -getmerge <output_path> <local_output_file>


3. awk 이용해서 최종 결과 출력

awk '{s += $1}END { print s }' <local_output_file>


참고: http://stackoverflow.com/questions/12716570/count-how-many-lines-in-large-files