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

Akira AJISAKA commented on HADOOP-8989:
---------------------------------------

Thanks for updating the patch. I compiled with the patch and tried some options.

1. When I executed -print0 option, newlines are included in the output as 
follows:
{code}
# hdfs dfs -find /user/root -name '*.txt' -print0
abc.txt
def.txt
{code}
Newlines shouldn't be included in -print0 option.

2. In Find.java, spaces should be used instead of tabs.
{code}
    // Initialize the static variables.
    EXPRESSIONS = new Class[] {
                // Operator Expressions
                And.class,
                // Action Expressions
                Print.class,
                // Navigation Expressions
                // Matcher Expressions
                Name.class
                };
{code}
Minor nits:

3. In Expressions.java,
{code}
  /**
   * Returns the precendence of this expression
   * (only applicable to operators).
   */
{code}
precendence should be precedence.

4. There are some trailing white spaces in Find.java.

5. In Print.java,
{code}
  private Print(boolean appendNull) {
    super();
    setUsage(USAGE);
    setHelp(HELP);
    setAppendNull(appendNull);
  }

  private void setAppendNull(boolean appendNull) {
    this.appendNull = appendNull;
  }
{code}
can be simplified as
{code}
  private Print(boolean appendNull) {
    super();
    setUsage(USAGE);
    setHelp(HELP);
    this.appendNull = appendNull;
  }
{code}

6.
{code}
  /**
   * Construct a Print {@link Expression} with an operational ASCII NUL
   * suffix.
   */
{code}
operational should be optional?

> hadoop dfs -find feature
> ------------------------
>
>                 Key: HADOOP-8989
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8989
>             Project: Hadoop Common
>          Issue Type: New Feature
>            Reporter: Marco Nicosia
>            Assignee: Jonathan Allen
>         Attachments: HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, 
> HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, 
> HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, 
> HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch, HADOOP-8989.patch
>
>
> Both sysadmins and users make frequent use of the unix 'find' command, but 
> Hadoop has no correlate. Without this, users are writing scripts which make 
> heavy use of hadoop dfs -lsr, and implementing find one-offs. I think hdfs 
> -lsr is somewhat taxing on the NameNode, and a really slow experience on the 
> client side. Possibly an in-NameNode find operation would be only a bit more 
> taxing on the NameNode, but significantly faster from the client's point of 
> view?
> The minimum set of options I can think of which would make a Hadoop find 
> command generally useful is (in priority order):
> * -type (file or directory, for now)
> * -atime/-ctime-mtime (... and -creationtime?) (both + and - arguments)
> * -print0 (for piping to xargs -0)
> * -depth
> * -owner/-group (and -nouser/-nogroup)
> * -name (allowing for shell pattern, or even regex?)
> * -perm
> * -size
> One possible special case, but could possibly be really cool if it ran from 
> within the NameNode:
> * -delete
> The "hadoop dfs -lsr | hadoop dfs -rm" cycle is really, really slow.
> Lower priority, some people do use operators, mostly to execute -or searches 
> such as:
> * find / \(-nouser -or -nogroup\)
> Finally, I thought I'd include a link to the [Posix spec for 
> find|http://www.opengroup.org/onlinepubs/009695399/utilities/find.html]



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to