복붙노트

[HADOOP] Apache Pig에서 빈 파일이나 누락 된 입력 파일을 어떻게 처리합니까?

HADOOP

Apache Pig에서 빈 파일이나 누락 된 입력 파일을 어떻게 처리합니까?

우리의 워크 플로우는 AWS 탄성 맵 감소 클러스터를 사용하여 일련의 돼지 작업을 실행하여 많은 양의 데이터를 집계 된 보고서로 조작합니다. 불행히도 입력 데이터는 잠재적으로 일관성이 없으며 파이프 라인에 입력 파일이나 0 바이트 파일이 제공되지 않거나 파이프 라인의 일부 단계에서 생성 될 수도 있습니다.

LOAD 문이 실행되는 동안 Pig는 입력 파일을 찾지 못하거나 입력 파일이 0 바이트 인 경우 실패합니다.

이 문제를 해결할 수있는 좋은 방법이 있습니까 (돼지 구성 또는 스크립트 또는 Hadoop 클러스터 구성 내에서 사용자 정의 로더를 작성하지 않고 ...).

(AWS elastic map reduce를 사용하기 때문에 Pig 0.6.0과 Hadoop 0.20가 붙어 있습니다.)

해결법

  1. ==============================

    1.(후손을 위해, 우리가 생각해 낸 서브 파 솔루션 :

    (후손을 위해, 우리가 생각해 낸 서브 파 솔루션 :

    0 바이트 문제를 처리하기 위해 우리는 상황을 감지하고 하나의 개행이있는 파일을 삽입 할 수 있음을 발견했습니다. 이로 인해 다음과 같은 메시지가 나타납니다.

    Encountered Warning ACCESSING_NON_EXISTENT_FIELD 13 time(s).
    

    적어도 돼지는 예외로 추락하지 않습니다.

    또는 경고를 피할 수있는 해당 파일의 '\ t'문자를 적절한 수만큼 줄 수 있지만, 필터에 걸린 데이터에 가비지가 삽입됩니다.

    이러한 동일한 아이디어는 더미 파일을 작성하여 입력 파일 없음 조건을 해결하는 데 사용될 수 있지만 위에 나열된 것과 동일한 단점이 있습니다.

  2. ==============================

    2.내가 사용한 방법은 쉘에서 돼지 스크립트를 실행하는 것입니다. 필자는 6 개의 다른 입력 디렉토리에서 데이터를 가져 오는 작업이 하나 있습니다. 그래서 각 입력 파일에 대한 단편을 작성했습니다.

    내가 사용한 방법은 쉘에서 돼지 스크립트를 실행하는 것입니다. 필자는 6 개의 다른 입력 디렉토리에서 데이터를 가져 오는 작업이 하나 있습니다. 그래서 각 입력 파일에 대한 단편을 작성했습니다.

    쉘은 입력 파일의 존재를 확인하고 조각으로부터 최종 돼지 스크립트를 어셈블합니다.

    그런 다음 최종 돼지 스크립트를 실행합니다. 저는 루브 골드버그 접근법에 대해 조금은 알고 있습니다.하지만 지금까지는 그렇게 좋았습니다. :-)

  3. from https://stackoverflow.com/questions/5737752/how-do-you-deal-with-empty-or-missing-input-files-in-apache-pig by cc-by-sa and MIT license