Hadoop Common
  1. Hadoop Common
  2. HADOOP-1795

Task.moveTaskOutputs is escaping special characters in output filenames

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 0.14.0
    • Fix Version/s: 0.15.0
    • Component/s: None
    • Labels:
      None

      Description

      after a migration from 0.10.1 to 0.14.0, jobs can't generate output files with special characters in their name, just like '[' or ']' for example, because they are escaped during the Task.moveTaskOutputs process.

      For example, if you try to generate an output file named /foo/bar[0], it ends up being named /foo/bar%5B0%5B.

      The culprit is Task.getFinalPath(), when it does relativePath.toString(), where I think it should do relativePath.getPath().

      1. HADOOP-1795.patch
        6 kB
        Frédéric Bertin

        Activity

        Frédéric Bertin created issue -
        Frédéric Bertin made changes -
        Field Original Value New Value
        Attachment HADOOP-1795.patch [ 12364765 ]
        Frédéric Bertin made changes -
        Status Open [ 1 ] Patch Available [ 10002 ]
        Doug Cutting made changes -
        Status Patch Available [ 10002 ] Resolved [ 5 ]
        Fix Version/s 0.15.0 [ 12312565 ]
        Resolution Fixed [ 1 ]
        Dennis Kubes made changes -
        Comment [ This patch breaks the Injector job within Nutch.

        java.io.IOException: Target file:/c:/nutch/hadoop/mapred/temp/inject-temp-479521103/_reduce_xtsclf/part-00000 already exists
                at org.apache.hadoop.fs.FileUtil.checkDest(FileUtil.java:246)
                at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:125)
                at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:116)
                at org.apache.hadoop.fs.RawLocalFileSystem.rename(RawLocalFileSystem.java:180)
                at org.apache.hadoop.fs.ChecksumFileSystem.rename(ChecksumFileSystem.java:380)
                at org.apache.hadoop.mapred.Task.moveTaskOutputs(Task.java:452)
                at org.apache.hadoop.mapred.Task.moveTaskOutputs(Task.java:469)
                at org.apache.hadoop.mapred.Task.saveTaskOutput(Task.java:426) ]
        Doug Cutting made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Owen O'Malley made changes -
        Assignee Frédéric Bertin [ fred.bertin ]
        Owen O'Malley made changes -
        Component/s mapred [ 12310690 ]

          People

          • Assignee:
            Frédéric Bertin
            Reporter:
            Frédéric Bertin
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development