これが私の問題です。使用するデータセットが大きいので、キーごとの最大値を制限する必要があります。キーごとに10000以上の値がある場合がありますが、それ以上の値が必要です。
では、キーごとに「x」の値だけを取得するようにジョブを構成するにはどうすればよいですか?(任意のキー)reduceフェーズ後。
編集:これはreduceソースコードです。私の主な問題は、時々OutOfMemoryを取得することです。これは、StringBuilderが巨大になるためです。
構成を通じて、「キーごとに10.000の値が必要」と言う方法があるかもしれません。そうでない場合は、レデューサーに追加のコードを追加する必要があります...
public void reduce(Text domain, Iterable<Text> inLinks, Context context) throws IOException,
InterruptedException {
allInlinks = new StringBuilder();
for (Text text : inLinks) {
allInlinks.append(text.toString());
allInlinks.append(",");
}
allLinksText.set(allInlinks.toString());
context.write(domain, allLinksText);
}