복붙노트

[HADOOP] 하둡에서 여러 폴더를 처리하는 방법

HADOOP

하둡에서 여러 폴더를 처리하는 방법

나는 다음과 같은 문제에 봉착했습니다. 나는 200K의 XML 파일이 있습니다. 나는 200 개 폴더가 있고 각 폴더 2000의 XML 파일이 있습니다. 내 HDFS이 있습니다. 아키텍처는 다음과 같습니다

RootFolder 
   Folder001
       1.xml
       2.xml
       2000.xml
   Folder002
       2001.xml

나는 파일을 읽고 몇 가지 XPath는 과정을 할 수있는 매퍼 프로그램을 작성해야합니다.

나는 RootFolder 입력 경로를 제공하는 경우 다음 매퍼 폴더를 읽고 XML 파일을 처리해야

즉 200 작업이 있어야한다. 그리고 각 폴더는 하나의 매퍼를 읽을 수 있어야

어떻게 여러 폴더를 처리하는 방법을?

해결법

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

    1.나의 이해에서 당신은이 문제가 :

    나의 이해에서 당신은이 문제가 :

    1 : 하나의 맵 작업에서 하위 폴더의 모든 파일을 매핑 할 필요가 :

    ANS : 당신은이 시나리오 CombineFileInputFormat를 사용할 수있다. 그것은 지정된 PathFilter에 대한 그룹 파일 (귀하의 경우는, 필터는 같은 폴더의 파일을 받아 들여야한다)하고 하나의 maptask에 할당됩니다. 즉, 폴더 당 maptask 달성 할 수있다. 더 나은 제어를 얻으려면 내 경우에 무엇을 것을, CombineFileInputFormat을 확장하고 자신 확인하십시오.

    2 : 루트 폴더를 지정하여도지도 작업 (들)에 대한 입력으로 하위 폴더 내 파일을 포함해야합니다.

    ANS는 : 새로운 API 릴리스에서 FileInputFormat는 어떤 수준까지 하위 폴더에서 반복적으로 파일을 취할 수 있습니다. 더 많은 정보는 여기에서 JIRA를 볼 수 있습니다.

    아니면 스스로, 서브 클래스 FileInputFormat을하고 listStatus 방법을 재정의합니다.

  2. from https://stackoverflow.com/questions/21178033/how-to-process-multiple-folders-in-hadoop by cc-by-sa and MIT license