задание mapreduce для пряжи, завершенной с помощью exitCode: -1000 из-за изменения ресурса в файловой системе src

Он будет вызываться и оцениваться каждый раз. Компилятор не может определить, является ли метод (или геттер) детерминированным и чистым (без побочных эффектов).

Обратите внимание, что фактическая оценка свойства может быть встроена компилятором JIT, что делает его эффективным как быстро как простое поле.

Хорошая практика - сделать оценку свойств недорогой. Если вы выполняете тяжелые вычисления в getter, подумайте о том, чтобы кешировать результат вручную или изменить его на метод.

0
задан levi 19 March 2019 в 08:38
поделиться

1 ответ

По-видимому, причина в том, что хранилище Azure не может сохранить исходную метку времени скопированного файла. Я искал обходной путь, который рекомендовал изменить исходный код yarn-common, чтобы отключить блок кода проверки меток времени при копировании файла, чтобы избежать исключений, чтобы работа MR продолжалась непрерывно.

Вот исходный код в последней версии yarn-common, который проверяет метку времени для скопированного файла и выдает исключение.

/** #L255
   * Localize files.
   * @param destination destination directory
   * @throws IOException cannot read or write file
   * @throws YarnException subcommand returned an error
   */
  private void verifyAndCopy(Path destination)
      throws IOException, YarnException {
    final Path sCopy;
    try {
      sCopy = resource.getResource().toPath();
    } catch (URISyntaxException e) {
      throw new IOException("Invalid resource", e);
    }
    FileSystem sourceFs = sCopy.getFileSystem(conf);
    FileStatus sStat = sourceFs.getFileStatus(sCopy);
    if (sStat.getModificationTime() != resource.getTimestamp()) {
      throw new IOException("Resource " + sCopy +
          " changed on src filesystem (expected " + resource.getTimestamp() +
          ", was " + sStat.getModificationTime());
    }
    if (resource.getVisibility() == LocalResourceVisibility.PUBLIC) {
      if (!isPublic(sourceFs, sCopy, sStat, statCache)) {
        throw new IOException("Resource " + sCopy +
            " is not publicly accessible and as such cannot be part of the" +
            " public cache.");
      }
    }

    downloadAndUnpack(sCopy, destination);
  }
0
ответ дан Peter Pan 19 March 2019 в 08:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: