복붙노트

[HADOOP] Hadoop : 어떻게 감속기 출력을 단일 파일에 병합 할 수 있습니까? [복제]

HADOOP

Hadoop : 어떻게 감속기 출력을 단일 파일에 병합 할 수 있습니까? [복제]

쉘에서 "getmerge"명령이이 작업을 수행 할 수 있음을 알고 있습니다.

하지만 Java 용 HDFS API로 작업 한 후에 이러한 출력을 병합하려면 어떻게해야합니까?

내가 실제로 원하는 것은 HDFS에서 하나의 병합 된 파일입니다.

내가 생각할 수있는 유일한 방법은 그 후에 추가 작업을 시작하는 것입니다.

감사!

해결법

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

    1.추측하기. 나는이 방법을 직접 사용해 보지 않았으므로 찾고있는 방법이 FileUtil.copyMerge인데, 이는 -getmerge 명령을 실행할 때 FsShell이 ​​호출하는 방법입니다. FileUtil.copyMerge는 두 개의 FileSystem 객체를 인수로 사용합니다. FsShell은 FileSystem.getLocal을 사용하여 대상 FileSystem을 검색하지만 대상에서 Path.getFileSystem을 대신 사용하여 OutputStream을 얻을 수없는 이유가 없습니다

    추측하기. 나는이 방법을 직접 사용해 보지 않았으므로 찾고있는 방법이 FileUtil.copyMerge인데, 이는 -getmerge 명령을 실행할 때 FsShell이 ​​호출하는 방법입니다. FileUtil.copyMerge는 두 개의 FileSystem 객체를 인수로 사용합니다. FsShell은 FileSystem.getLocal을 사용하여 대상 FileSystem을 검색하지만 대상에서 Path.getFileSystem을 대신 사용하여 OutputStream을 얻을 수없는 이유가 없습니다

    즉, 나는 그것이 당신을 아주 많이 차지한다고 생각하지 않는다. 병합은 여전히 ​​로컬 JVM에서 일어나고있다. 그래서 당신은 정말로 지나치게 많은 돈을 절약하지 않고 -put을 뒤따라옵니다.

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

    2.코드에 단일 감속기를 설정하여 단일 출력 파일을 가져옵니다.

    코드에 단일 감속기를 설정하여 단일 출력 파일을 가져옵니다.

  3. from https://stackoverflow.com/questions/12911798/hadoop-how-can-i-merge-reducer-outputs-to-a-single-file by cc-by-sa and MIT license