0

java.util.* で定義されている hashmap クラスを Hadoop プログラムで使用したいと考えています。

Java のハッシュマップは、Map D = new HashMap(); を使用してインスタンス化されます。

上記の行を使用して hadoop jar でコンパイルすると、Hadoop では Map が別のものに使用されるため、エラーがスローされます。

hashmap に相当する hadoop を検索すると、 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 で行うように、これを 1 行で実装できます ( hashmap(key , value) H = new hashmap() のような簡単な方法で意味します)。

4

2 に答える 2

0

1 つ覚えておいてください: Hadoop ファイル システムにカスタム クラス オブジェクトを直接書き込むことはできません。それらを HDFS に格納するには、同等の書き込み可能なクラスを使用する必要があります。例:文字列の代わりにテキストクラスを使用する必要があります(テキストは文字列の書き込み可能なバージョンです)。同様に、マップにカスタム オブジェクトが含まれている場合は、書き込み可能なクラスを作成し、そのすべての要素を書き込むロジックを処理する必要があります。

于 2013-08-08T18:00:00.147 に答える