복붙노트

[HADOOP] HDFS : HDFS API를 사용하여 SequenceFile에 추가

HADOOP

HDFS : HDFS API를 사용하여 SequenceFile에 추가

향후 MapReduce 작업을위한 설정으로 MapReduce 작업을 실행하지 않고 Java API를 사용하여 HDFS에서 시퀀스 파일을 작성하고 유지하려고했습니다. MapReduce 작업에 대한 모든 입력 데이터를 단일 시퀀스 파일에 저장하고 싶지만 하루 종일 데이터가 추가됩니다. 문제는 SequenceFile이 존재하면 다음 호출이 SequenceFile을 추가하는 대신 덮어 쓰는 것입니다.

// fs and conf are set up for HDFS, not as a LocalFileSystem
seqWriter = SequenceFile.createWriter(fs, conf, new Path(hdfsPath),
               keyClass, valueClass, SequenceFile.CompressionType.NONE);
seqWriter.append(new Text(key), new BytesWritable(value));
seqWriter.close();

또 다른 관심사는 내 형식의 파일을 유지 관리 할 수 ​​없으며 하루 중 언제라도 해당 데이터를 사용하여 MapReduce 작업을 시작할 수 있으므로 데이터를 SequenceFile로 변환 할 수 없다는 것입니다.

SequenceFile에 추가하고 형식을 유지하기 위해 다른 API 호출을 찾을 수 없습니다. 또한 포맷이 필요하기 때문에 단순히 두 개의 SequenceFile을 연결할 수 없습니다.

또한 SequenceFile에 추가하는 적은 양의 데이터에 대한 오버 헤드가 높기 때문에 MapReduce 작업을 실행하지 않기를 원했습니다.

생각이나 해결 방법이 있습니까? 감사.

해결법

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

    1.개선 된 JIRA를 통해 기존 SequenceFiles 추가 지원이 Apache Hadoop 2.6.1 및 2.7.2 릴리스 이후에 추가되었습니다. https://issues.apache.org/jira/browse/HADOOP-7139

    개선 된 JIRA를 통해 기존 SequenceFiles 추가 지원이 Apache Hadoop 2.6.1 및 2.7.2 릴리스 이후에 추가되었습니다. https://issues.apache.org/jira/browse/HADOOP-7139

    예를 들어 사용법은 다음과 같습니다. https://github.com/apache/hadoop/blob/branch-2.7.2/hadoop-common-project/hadoop-common/src/test/java/org/ 아파치 /hadoop/io/TestSequenceFileAppend.java#L63-L140

    CDH5 사용자는 버전 CDH 5.7.1 이상에서 동일한 기능을 찾을 수 있습니다.

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

    2.죄송합니다. 현재 Hadoop FileSystem은 추가 기능을 지원하지 않습니다. 그러나 향후 릴리스에는 계획이 있습니다.

    죄송합니다. 현재 Hadoop FileSystem은 추가 기능을 지원하지 않습니다. 그러나 향후 릴리스에는 계획이 있습니다.

  3. from https://stackoverflow.com/questions/5598400/hdfs-using-hdfs-api-to-append-to-a-sequencefile by cc-by-sa and MIT license