我在Hadoop Map Reduce程序中使用MapWritable
。当我将MapWritable
映射作为new Text (mapName.toString())
发出时,我得到以下输出
key1 org.apache.hadoop.io.MapWritable@396cbd97
key2 org.apache.hadoop.io.MapWritable@17991de1
key3 org.apache.hadoop.io.MapWritable@18f63055
您能否让我知道如何以简单的方式打印此内容而不是对其进行遍历?我知道我们可以仅通过调用mapName.toString()来打印HashMap。
我在Stripes方法中使用了此方法,与Pairs方法相比,我发现性能非常差(如果您不了解Map-Reduce中的Design Patterns,请忽略此行。我添加了此语句,以向了解它的人提供更多信息) 。
任何指针将不胜感激。
最佳答案
完成此操作的唯一方法是扩展MapWritable
并覆盖toString
以输出所需的内容(这可能涉及在调用toString
或创建/修改 map 时对其进行迭代,并根据您的需要将字符串存储为字段需求)。
MapWritable的javadoc表明它从Object继承了toString
方法-之所以看到HashMap
更为有用的输出是因为它继承了javadoc的AbstractMap
方法,该方法从ojit_a覆盖了toString
: