apache/hadoop · error · PathIOException

Cannot get relative path for URI:%s

Error message

Cannot get relative path for URI:%s

What it means

Error "Cannot get relative path for URI:%s" thrown in apache/hadoop.

Source

Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/CopyFromLocalOperation.java:360

    }

    if (!overwrite) {
      throw new PathExistsException(dest + " already exists");
    }
  }

  /**
   * Get the final path of a source file with regards to its destination.
   *
   * @param src - source path
   * @return - the final path for the source file to be uploaded to
   * @throws PathIOException - if a relative path can't be created
   */
  private Path getFinalPath(Path src) throws PathIOException {
    URI currentSrcUri = src.toUri();
    URI relativeSrcUri = source.toUri().relativize(currentSrcUri);
    if (relativeSrcUri.equals(currentSrcUri)) {
      throw new PathIOException("Cannot get relative path for URI:"
          + relativeSrcUri);
    }

    Optional<FileStatus> status = getDestStatus();
    if (!relativeSrcUri.getPath().isEmpty()) {
      return new Path(destination, relativeSrcUri.getPath());
    } else if (status.isPresent() && status.get().isDirectory()) {
      // file to dir
      return new Path(destination, src.getName());
    } else {
      // file to file
      return destination;
    }
  }

  private Optional<FileStatus> getDestStatus() {
    return Optional.ofNullable(destStatus);
  }

View on GitHub (pinned to 2add963021)

Solutions

  1. Ensure the source URI is under the base directory being copied so a relative path can be computed.

When it happens

Trigger: Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/CopyFromLocalOperation.java:360 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/ba768b976164b759. Report an issue: GitHub.