[pig] cache multiple files - dsindex/blog GitHub Wiki
pig에서 hdfs상 특정 파일을 참조하고자 할때 cache 구문을 사용할 수 있다. 그런데 만약 개수가 정해지지 않은 여러개의 파일을 동시에 cache하려면 어떻게 해야할까?
방법은 두가지이다.
- 파일들을 tarball로 압축해서 하나의 파일로 만든 다음, cache 구문을 이용해서 전송한다.
- 구체적인 사용법은 아래 링크를 참조하자.
-
- HDFS에 올려서 참조하는 방법
-
- hadoop의 옵션중에서
--files
,--archives
옵션을 사용하는 방법
- hadoop의 옵션중에서
- 어느 방법이든 기본적으로 hdfs에 올리고, 그것을 slave node에서 받아서 처리한다는 점은 같다.
- 압축된 파일은 slave node의 임시 디렉토리에 전송되고, 압축이 풀린다. 그리고 개별 mapper, reducer는 자신의 working directory에 해당 디렉토리 경로를 soft link로 만들어둔다. 따라서, './file' 이런 식으로 특정 파일을 참조할 수 있다.
- hadoop 서버의 특정위치(정해진 로컬디렉토리 경로, hdfs 경로가 아님)에 참조할 파일들을 scp로 전송하고 pig에서 참조한다.
- 위에서 하는 방법을 보다 직접적으로 제어한다고 보면 된다.