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