Prechádzať zdrojové kódy

HADOOP-11318. Update the document for hadoop fs -stat

Akira Ajisaka 10 rokov pred
rodič
commit
ce29074685

+ 2 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -499,6 +499,8 @@ Release 2.7.0 - UNRELEASED
 
   BUG FIXES
 
+    HADOOP-11318. Update the document for hadoop fs -stat (aajisaka)
+
     HADOOP 11400. GraphiteSink does not reconnect to Graphite after 'broken pipe' 
     (Kamil Gorlo via raviprak)
 

+ 21 - 12
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Stat.java

@@ -30,15 +30,17 @@ import org.apache.hadoop.fs.FileStatus;
 
 /**
  * Print statistics about path in specified format.
- * Format sequences:
- *   %b: Size of file in blocks
- *   %g: Group name of owner
- *   %n: Filename
- *   %o: Block size
- *   %r: replication
- *   %u: User name of owner
- *   %y: UTC date as "yyyy-MM-dd HH:mm:ss"
- *   %Y: Milliseconds since January 1, 1970 UTC
+ * Format sequences:<br>
+ *   %b: Size of file in blocks<br>
+ *   %F: Type<br>
+ *   %g: Group name of owner<br>
+ *   %n: Filename<br>
+ *   %o: Block size<br>
+ *   %r: replication<br>
+ *   %u: User name of owner<br>
+ *   %y: UTC date as &quot;yyyy-MM-dd HH:mm:ss&quot;<br>
+ *   %Y: Milliseconds since January 1, 1970 UTC<br>
+ * If the format is not specified, %y is used by default.
  */
 @InterfaceAudience.Private
 @InterfaceStability.Unstable
@@ -48,12 +50,19 @@ class Stat extends FsCommand {
     factory.addClass(Stat.class, "-stat");
   }
 
+  private static final String NEWLINE = System.getProperty("line.separator");
+
   public static final String NAME = "stat";
   public static final String USAGE = "[format] <path> ...";
   public static final String DESCRIPTION =
-    "Print statistics about the file/directory at <path> " +
-    "in the specified format. Format accepts filesize in blocks (%b), group name of owner(%g), " +
-    "filename (%n), block size (%o), replication (%r), user name of owner(%u), modification date (%y, %Y)\n";
+    "Print statistics about the file/directory at <path>" + NEWLINE +
+    "in the specified format. Format accepts filesize in" + NEWLINE +
+    "blocks (%b), type (%F), group name of owner (%g)," + NEWLINE +
+    "name (%n), block size (%o), replication (%r), user name" + NEWLINE +
+    "of owner (%u), modification date (%y, %Y)." + NEWLINE +
+    "%y shows UTC date as \"yyyy-MM-dd HH:mm:ss\" and" + NEWLINE +
+    "%Y shows milliseconds since January 1, 1970 UTC." + NEWLINE +
+    "If the format is not specified, %y is used by default." + NEWLINE;
 
   protected final SimpleDateFormat timeFmt;
   {

+ 8 - 3
hadoop-common-project/hadoop-common/src/site/apt/FileSystemShell.apt.vm

@@ -665,13 +665,18 @@ permissions userid groupid modification_date modification_time dirname
 
 * stat
 
-   Usage: <<<hadoop fs -stat URI [URI ...]>>>
+   Usage: <<<hadoop fs -stat [format] \<path\> ...>>>
 
-   Returns the stat information on the path.
+   Print statistics about the file/directory at \<path\> in the specified
+   format. Format accepts filesize in blocks (%b), type (%F), group name of
+   owner (%g), name (%n), block size (%o), replication (%r), user name of
+   owner(%u), and modification date (%y, %Y). %y shows UTC date as
+   "yyyy-MM-dd HH:mm:ss" and %Y shows milliseconds since January 1, 1970 UTC.
+   If the format is not specified, %y is used by default.
 
    Example:
 
-     * <<<hadoop fs -stat path>>>
+     * <<<hadoop fs -stat "%F %u:%g %b %y %n" /file>>>
 
    Exit Code:
    Returns 0 on success and -1 on error.

+ 20 - 4
hadoop-common-project/hadoop-common/src/test/resources/testConf.xml

@@ -786,19 +786,35 @@
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^( |\t)*Print statistics about the file/directory at &lt;path&gt; in the specified format.( )*</expected-output>
+          <expected-output>^( |\t)*Print statistics about the file/directory at &lt;path&gt;( )*</expected-output>
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^( |\t)*Format accepts filesize in blocks \(%b\), group name of owner\(%g\), filename \(%n\),( )*</expected-output>
+          <expected-output>^( |\t)*in the specified format. Format accepts filesize in( )*</expected-output>
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^( |\t)*block size \(%o\), replication \(%r\), user name of owner\(%u\), modification date( )*</expected-output>
+          <expected-output>^( |\t)*blocks \(%b\), type \(%F\), group name of owner \(%g\),( )*</expected-output>
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^( |\t)*\(%y, %Y\)( )*</expected-output>
+          <expected-output>^( |\t)*name \(%n\), block size \(%o\), replication \(%r\), user name( )*</expected-output>
+        </comparator>
+        <comparator>
+          <type>RegexpComparator</type>
+          <expected-output>^( |\t)*of owner \(%u\), modification date \(%y, %Y\).( )*</expected-output>
+        </comparator>
+        <comparator>
+          <type>RegexpComparator</type>
+          <expected-output>^( |\t)*%y shows UTC date as "yyyy-MM-dd HH:mm:ss" and( )*</expected-output>
+        </comparator>
+        <comparator>
+          <type>RegexpComparator</type>
+          <expected-output>^( |\t)*%Y shows milliseconds since January 1, 1970 UTC.( )*</expected-output>
+        </comparator>
+        <comparator>
+          <type>RegexpComparator</type>
+          <expected-output>^( |\t)*If the format is not specified, %y is used by default.( )*</expected-output>
         </comparator>
       </comparators>
     </test>