私はHadoopの初心者です。次の問題があります。私がやろうとしているのは、データベースの断片をマップすることです(マーザにその理由などを問いただしてはいけません)。そして、このデータに対して特定の操作を行い、結果をレデューサーに出力し、その出力を再度使用します。同じシャードフォーマットを使用して同じデータに対して第2のフェーズマップ/リダクションジョブを実行する。 Hadoopは、データベースの断片を送信するための入力方法を提供していません。 LineInputFormatとLineRecordReaderを使用して行単位でしか送信できません。 NLineInputFormatはこの場合も役に立ちません。私は自分のInputFormatを書くためにFileInputFormatとRecordReaderクラスを拡張する必要があります。私はLineRecordReaderを使用することをお勧めしました。基礎となるコードはすでにFileSplitsを扱っており、ファイルの分割に関連するすべての問題があります。 私が今行う必要があるのは、正確にわからないnextKeyValue()メソッドをオーバーライドすることだけです。新しいAPIを使用したHadoopカスタム入力フォーマット
for(int i=0;i<shard_size;i++){
if(lineRecordReader.nextKeyValue()){ lineValue.append(lineRecordReader.getCurrentValue().getBytes(),0,lineRecordReader.getCurrentValue().getLength());
}
上記のコードは書きましたが、何とかうまく動作しないものです。あらかじめありがとうございます
は、のようなものですthis – Ahmedov