[ 
https://issues.apache.org/jira/browse/HADOOP-6387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13041629#comment-13041629
 ] 

Daryn Sharp commented on HADOOP-6387:
-------------------------------------

Using checkDest adds new logic that I don't think is warranted:  The dest is 
supposed to be a file per the usage of copyMerge.  With this change, if the 
given dest is a directory then the output is the dest + basename of the first 
source directory. I feel that's unexpected and surprisingly behavior, so I'd 
like to see that reverted.

There's an easier way to get at the full arg list higher in the call stack: 
processArguments().  Hooking in there and eliminate processPath(s) since those 
are intended to process each path individually.  In processArguments, make a 
call to super (don't copy-n-paste like in the patch), and then call FileUtil's 
copymerge.  Implement processPathArgument with a null body to short-out the 
calls to the now removed processPath(s).

(Just an aside: I've been tempted to eliminate the call to FileUtils and just 
use processPath to append to the dst file)

> FsShell -getmerge source file pattern is broken
> -----------------------------------------------
>
>                 Key: HADOOP-6387
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6387
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 0.23.0
>            Reporter: Eli Collins
>            Assignee: XieXianshan
>            Priority: Minor
>             Fix For: 0.23.0
>
>         Attachments: HADOOP-6387.patch
>
>
> The FsShell -getmerge command doesn't work if the "source file pattern" 
> matches files. See below. If the current behavior is intended then we should 
> update the help documentation and java docs to match, but it would be nice if 
> the user could specify a set of files in a directory rather than just 
> directories.
> {code}
> $ hadoop fs -help getmerge
> -getmerge <src> <localdst>:  Get all the files in the directories that 
>               match the source file pattern and merge and sort them to only
>               one file on local fs. <src> is kept.
> $ hadoop fs -ls
> Found 3 items
> -rw-r--r--   1 eli supergroup          2 2009-11-23 17:39 /user/eli/1.txt
> -rw-r--r--   1 eli supergroup          2 2009-11-23 17:39 /user/eli/2.txt
> -rw-r--r--   1 eli supergroup          2 2009-11-23 17:39 /user/eli/3.txt
> $ hadoop fs -getmerge /user/eli/*.txt sorted.txt
> $ cat sorted.txt
> cat: sorted.txt: No such file or directory
> $ hadoop fs -getmerge /user/eli/* sorted.txt
> $ cat sorted.txt
> cat: sorted.txt: No such file or directory
> $ hadoop fs -getmerge /user/* sorted.txt
> $ cat sorted.txt 
> 1
> 2
> 3
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to