0

我想在 hadoop 程序中使用 java.util.* 中定义的 hashmap 类。

Java 中的 hashmap 是使用 Map D = new HashMap(); 实例化的。

当您使用上面的行并使用 hadoop jar 编译时,它会引发错误,因为 Map 用于 hadoop 中的不同内容。

在搜索 hadoop 等效的 hashmap 时,我偶然发现了 HashMapWritable

http://lintool.github.io/Cloud9/docs/api/edu/umd/cloud9/io/map/HashMapWritable.html

使用 HashMapWritable 的一个示例程序如下所示:

http://trac.nchc.org.tw/cloud/browser/sample/hadoop-0.16/tw/org/nchc/tuple/HashMapWritable.java

我不想经历创建单独的类和为键和值定义单独的对象的痛苦。

有没有更简单的方法,我可以像在 Java 中那样在一行中实现它(我的意思是像 hashmap(key , value) H = new hashmap() 这样的简单方法)

4

2 回答 2

1

你可以试试:

java.util.Map<K,V> map= new HashMap<K,V>();

这样它将解析为您想要的 Map 类。

于 2013-08-08T18:04:20.127 回答
0

记住一件事:您不能直接在 hadoop 文件系统上编写自定义类对象。您需要使用它们等效的可写类将它们存储到 HDFS 上。例如:您需要使用 Text 类而不是 String(Text 是 String 的可写版本)。同样,如果您的地图包含自定义对象,您需要创建一个可写类并处理编写其中每个元素的逻辑。

于 2013-08-08T18:00:00.147 回答