我在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更为有用的输出是因为它继承了javadocAbstractMap方法,该方法从ojit_a覆盖了toString:

08-06 05:51