2012-04-17 1 views

답변

4

PigStorage는 파일이 압축되어 있음을 인식합니다 (실제로 .gz 확장자로 PigTextInputFormat이 확장되는 TextInputFormat에 구현 됨). 그러나 그 후에는 tar 파일을 처리하게됩니다. tar 파일의 헤더 행을 처리 할 수 ​​있다면 PigStorage를 그대로 사용할 수 있습니다. 그렇지 않으면 PigTextInputFormat 확장을 작성하여 각 파일 사이의 tar 헤더 행을 제거해야합니다.

5

@ ChrisWhite의 답변은 기술적으로 정확하며 내 답변 대신 자신의 답변을 수락해야합니다 (적어도 IMO).

tar.gz 파일을 Hadoop에서 가져와야합니다. Gzip 파일은 분할 할 수 없으므로 gzip 파일이 큰 경우 매퍼에서 핫스팟을 보게됩니다. 예를 들어, .tar.gz 파일이 100GB 인 경우 계산을 분리 할 수 ​​없습니다.

다른 한편으로는 작다고 가정 해 봅시다. 어떤 경우에, 돼지는 함께 모으는 좋은 일을 할 것이고, 쪼개지는 문제는 사라집니다. 이것은 이제 NameNode로 수많은 파일을 다루고 있다는 단점을 가지고 있습니다. 또한 파일은 크기가 작기 때문에 파일을보다 합리적인 형식으로 재구성하는 것이 상대적으로 저렴해야합니다.

그래서 파일을 어떤 형식으로 바꾸어야합니까? 좋은 질문!

  • 그냥 하나의 큰 블록 레벨 압축 시퀀스 파일로 모든을 연결하는 것은 가장 어려운하지만 성능 측면에서 가장 보람이있을 수 있습니다.
  • 다른 하나는 단지 압축을 무시하고 해당 파일을 분해하거나 최소한 개를 연결합니다 (압축하지 않고 성능 조회수가 표시됨).
  • 마지막으로, 파일을 ~ 100MB 청크로 만든 다음 gzip으로 만들 수 있습니다.

필자는 일종의 tarball 로더를 piggybank에 쓰는 것이 완전히 합리적이라고 생각하지만 개인적으로는 데이터를 다르게 배치하려고합니다.