12

ばかげた質問で申し訳ありませんが、Google 検索で答えが見つかりませんでした。LongWritableタイプを理解するにはどうすればよいですか?それは何ですか?誰でもスキーマまたはその他の役立つページにリンクできますか?

4

3 に答える 3

22

DataInputHadoop は、DataOutputオブジェクト (通常は IO ストリーム)を介して Java 型との間でデータをシリアライズできる必要があります。Writable クラスは、`write(DataOuput) と readFields(DataInput) の 2 つのメソッドを実装することでこれを行います。

具体的LongWritableにはWritable、Java long をラップするクラスです。

ほとんどの場合 (特に始めたばかりの場合)、精神的に置き換えることができますLongWritable->Longつまり、それは単なる数字です。独自のデータ型を定義できるようになると、書き込み可能なインターフェイスの実装に慣れることができます。

次のようになります。

public interface Writable {

       public void write(DataOutput out) throws IOException;

       public void readFields(DataInput in) throws IOException;
}
于 2012-06-18T15:51:51.313 に答える
5

Mapper クラスは、map 関数の入力キー、入力値、出力キー、および出力値の型を指定する 4 つの正式な型パラメーターを持つジェネリック型です。

public class MaxTemperatureMapper
    extends Mapper<LongWritable, Text, Text, IntWritable> {
     @Override
    public void map(LongWritable key, Text value, Context context)
                                throws IOException, InterruptedException {

    }
    @Override
    public void reduce(Text key, Iterable<IntWritable> values, Context context)
    throws IOException, InterruptedException 
    {
    }

}

コード例では、入力キーは長整数オフセットで、入力値はテキスト行です。出力キーは整数で、出力値は整数です。組み込みの Java 型を使用するのではなく、Hadoop は、ネットワークのシリアライゼーション用に最適化された独自の基本型のセットを提供します。これらは org.apache.hadoop.io パッケージにあります。

ここでは、Java Long、Text (Java String など)、および IntWritable (Java Integer など) に対応する LongWritable を使用します。

于 2014-12-09T17:02:52.727 に答える