0

次のカウンターが定義されています

static enum BadRecordCounters
{
    NO_CREATION_DATE, UNKNOWN_USER_ID, UNPARSEABLE_RECORD, UNTAGGED_POSTS
}

そして、それらは以下のように表示されます

14/05/06 21:43:06 INFO mapred.JobClient:   com.aravind.learning.hadoop.mapred.techtalks.StackoverflowDataWranglerMapper$BadRecordCounters
14/05/06 21:43:06 INFO mapred.JobClient:     UNKNOWN_USER_ID=93
14/05/06 21:43:06 INFO mapred.JobClient:     UNTAGGED_POSTS=2461

これらに代替テキストを使用するメカニズムがあるかどうか疑問に思っています。たとえば、カウンター グループをFQCN ではなく、Bad Record Countersとして読み取る必要があります。

4

2 に答える 2

3

Map Reduce を使用すると、プロパティ ファイルを介してプログラムで指定されたカウンターのラベルを変更できます。

Definitive ガイドには、このトピックを扱う「読み取り可能なカウンター名」というセクションがあります。

ここで関連するセクションを再現しています

読みやすい名前を付けるためのレシピは次のとおりです。ネストされたクラスのセパレータとしてアンダースコアを使用して、列挙型にちなんだ名前のプロパティ ファイルを作成します。プロパティ ファイルは、列挙型を含む最上位クラスと同じディレクトリにある必要があります。このファイルは、例 8-1 のカウンタの MaxTemperatureWithCounters_Temperature.properties という名前です。

プロパティ ファイルには、CounterGroupName という名前の単一のプロパティが含まれている必要があります。この値は、グループ全体の表示名です。次に、列挙型の各フィールドには、対応するプロパティが定義されている必要があります。その名前は、.name のサフィックスが付いたフィールドの名前であり、その値はカウンターの表示名です。

MaxTemperatureWithCounters_Temperature.properties:
CounterGroupName=Air Temperature Records
MISSING.name=Missing
MALFORMED.name=Malformed

プロパティ ファイルは、列挙型を含む最上位クラスと同じディレクトリにある必要があります。

于 2014-05-07T05:52:43.443 に答える
2

この関数を使用して、カウンターをインクリメントできます。

context.getCounter("PrettyGroupName", BadRecordCounters.NO_CREATION_DATE.name()).increment(1);
于 2014-05-07T08:10:27.607 に答える