Запись в HDFS: файл перезаписан - PullRequest
1 голос
/ 01 ноября 2011

Я пишу в файловую систему hadoop. Но каждый раз, когда я добавляю что-то, он перезаписывает данные, а не добавляет их в существующие данные / файл. Код, который делает это, представлен ниже. Этот код вызывается снова и снова для разных данных. Является ли открытие нового SequenceFile.Writer каждый раз проблемой?

Каждый раз, когда я получаю путь как новый путь («someDir»);

  public void writeToHDFS(Path path, long uniqueId, String data){
      FileSystem fs = path.getFileSystem(conf);
      SequenceFile.Writer inputWriter = new SequenceFile.Writer(fs, conf,
          path, LongWritable.class, MyWritable.class);
      inputWriter.append(new LongWritable(uniqueId++), new MyWritable(data));
      inputWriter.close();
  }

1 Ответ

3 голосов
/ 01 ноября 2011

В настоящее время нет способа добавить существующий файл SequenceFile через API. Когда вы создаете новый SequenceFile.Writer объект, он не добавляется к существующему файлу с этим Path, а вместо этого перезаписывает его. Смотрите мой предыдущий вопрос .

Как указывает Томас, если вы сохраните тот же объект SequenceFile.Writer, вы сможете добавлять к файлу, пока не вызовете close().

...