Parcourir la source

HADOOP-6842. "hadoop fs -text" does not give a useful text representation of MapWritable objects

(cherry picked from commit cc17c83585f581d56e7c42b91464cd7a99e8cf90)
Robert (Bobby) Evans il y a 10 ans
Parent
commit
eef8d70bb0

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

@@ -19,6 +19,9 @@ Release 2.8.0 - UNRELEASED
 
   IMPROVEMENTS
 
+    HADOOP-6842. "hadoop fs -text" does not give a useful text representation
+    of MapWritable objects (Akira Ajisaka via bobby)
+
     HADOOP-11719. [Fsshell] Remove bin/hadoop reference from
     GenericOptionsParser default help text.
 

+ 5 - 0
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/MapWritable.java

@@ -189,4 +189,9 @@ public class MapWritable extends AbstractMapWritable
       instance.put(key, value);
     }
   }
+
+  @Override
+  public String toString() {
+    return instance.toString();
+  }
 }

+ 10 - 1
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestMapWritable.java

@@ -148,5 +148,14 @@ public class TestMapWritable extends TestCase {
 
     assertEquals(map1.hashCode(), map2.hashCode());
     assertFalse(map1.hashCode() == map3.hashCode());
-}
+  }
+
+  /** Verify text command outputs a useful representation for MapWritable. */
+  public void testToString() {
+    MapWritable map = new MapWritable();
+    final IntWritable key = new IntWritable(5);
+    final Text value = new Text("value");
+    map.put(key, value);
+    assertEquals("{5=value}", map.toString());
+  }
 }