Skip to content

Commit

Permalink
modified English comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
tatsuya-nakamura committed Mar 29, 2013
1 parent bd89238 commit d1da83e
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import java.util.List;

/**
* 1 カラムに対する編集情報
* ColumnEvaluationSetting expresses the editing information for 1 column of the input. <br>
* <br>
* 入力の1カラムに対する編集情報を表現します。 <br>
*/
public class ColumnEvaluationSetting {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ public interface ColumnIndexInformation {

byte getFieldType();

/**
* @return Access type from a parent.
*/
AccessType getAccessType();

ColumnIndexInformation getChild();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
public class DefaultColumnIndexInformation implements ColumnIndexInformation {
private final int mIndex;
private final FieldSchema mFieldSchema;
// 親からのアクセス方法
private final AccessType mAccessType;
private ColumnIndexInformation mChild = null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.apache.pig.impl.util.UDFContext;

/**
* (english)<br>
* MulticastEvaluate supports the UDF processing to multiple Bag in input Tuple. <br>
* <br>
* 渡された Tuple 中の複数の Bag への UDF 処理の記述をサポートします。 <br>
*/
Expand All @@ -44,12 +44,16 @@ public class MulticastEvaluate extends EvalFunc<Tuple> {
// -----------------------------------------------------------------------------------------------------------------

/**
* 「どんな処理」を「どのカラム」にするかという情報
* This expresses information "what kind of processing" make "which column". <br>
* <br>
* 「どんな処理」を「どのカラム」にするかという情報を表します。
*/
private final List<ReflectionUDFSetting> mReflectUDFSettings;

/**
* 「カラム毎」に「どんな処理」をするかという情報
* This expresses information "what kind of processing" do to "every column". <br>
* <br>
* 「カラム毎」に「どんな処理」をするかという情報を表します。
*/
private static List<ColumnEvaluationSetting> mColumnEvaluationSettings;

Expand Down Expand Up @@ -138,7 +142,9 @@ public Tuple exec(Tuple aInput) throws IOException {
}

/**
* aInput の構造が Tuple( ... ) または Tuple(Tuple( ... )) のどちらでも Tuple( ... ) を選択する。
* Chooses Tuple( ... ), if aInput structure in both of Tuple( ... ) or Tuple(Tuple( ... )). <br>
* <br>
* aInput の構造が Tuple( ... ) または Tuple(Tuple( ... )) のどちらでも Tuple( ... ) を選択します。 <br>
*
* @param aInput
* @return
Expand All @@ -157,21 +163,17 @@ private Tuple getTurgetTuple(Tuple aInput) {

@Override
public Schema outputSchema(Schema aInput) {
// このカラムをどう変換するか、という情報にまとめる
// インスタンスの使いまわしとかはリファクタ時に対応

Schema tTargetSchema = getTargetSchema(aInput);
Schema tInnerTupleSchema = new Schema();

List<FieldSchema> tInputFields = tTargetSchema.getFields();
List<ReflectionUDFSetting> tReflectUDFSettings = mReflectUDFSettings;
// レコードの最上位カラム数と一致します。
List<ColumnEvaluationSetting> tColumnEvaluationSettings = new ArrayList<ColumnEvaluationSetting>();
// カラム毎のイテレーション
// iteration by column
for (FieldSchema tFieldSchema : tInputFields) {
boolean tEvaluation = false;
ColumnEvaluationSetting tSetting = new ColumnEvaluationSetting();
// 評価方法毎のイテレーション
// iteration by evaluate method
for (ReflectionUDFSetting tReflectUDFSetting : tReflectUDFSettings) {
String tCurrentFieldAlias = tFieldSchema.alias;
if (tReflectUDFSetting.matchesColumnRegex(tCurrentFieldAlias)) {
Expand All @@ -189,10 +191,8 @@ public Schema outputSchema(Schema aInput) {
}
}
}
// 評価が設定されていないカラムはスルー評価器を設定する
// set ThroughColumnEvaluator, if column hasn't evaluate method
if (!tEvaluation) {
// スルー評価器を設定
// かつ。OutputSchema情報を確定できる
tSetting.addColumnEvaluator(ThroughColumnEvaluator.INSTANCE);
tInnerTupleSchema.add(tFieldSchema);
}
Expand All @@ -217,7 +217,9 @@ public Schema outputSchema(Schema aInput) {
}

/**
* aInput の構造が Tuple( ... ) または Tuple(Tuple( ... )) のどちらでも Tuple( ... ) を選択する。
* Chooses Tuple( ... ), if aInput structure in both of Tuple( ... ) or Tuple(Tuple( ... )). <br>
* <br>
* aInput の構造が Tuple( ... ) または Tuple(Tuple( ... )) のどちらでも Tuple( ... ) を選択します。 <br>
*
* @param aInput
* @return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ static List<ColumnIndexInformation> parseReflectionUDFParameters(String aReflect

String[] tParameters = aReflectionUDFParametersString.split(MulticastEvaluationConstants.REFLECTION_UDF_PARAMETERS_SEPARATOR);
for (String tParameterString : tParameters) {
// 最上位要素を追加
// append top element | 最上位要素を追加
DefaultColumnIndexInformation tCurrentColumnIndex = new DefaultColumnIndexInformation(0, aColumnValueFieldSchema, AccessType.FLAT);
tColumnIndexs.add(tCurrentColumnIndex);
FieldSchema tCurrentField = aColumnValueFieldSchema;
Expand Down Expand Up @@ -114,6 +114,7 @@ static List<ColumnIndexInformation> parseReflectionUDFParameters(String aReflect
// alias pattern
FieldSchema tField = tCurrentField.schema.getField(tAddressAlias);
if (tField == null) {
// Because there is possibility appointed in Bag{ ... } not Bag{Tuple( ... )} , ignore one layer of schema and look for tAddressAlias .
// Bag{Tuple( ... )} ではなく Bag{ ... } で指定された可能性が有るので1階層無視して tAddressAlias を探す
if (tCurrentField.type == DataType.BAG) {
FieldSchema tBagTupleFieldSchema = tCurrentField.schema.getField(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ public static EvalFunc<?> getUDFInstance(String aUDFClassName, Schema aInputSche
break;
}
}
// 1周で合致しないまら {()} が問題の可能性が有るので、スキーマを調整してもう一度
// Because {()} is it in the possibility of the problem if not equal with one lap, look for it by adjusting a schema once again.
// 1周で合致しないなら {()} が問題の可能性が有るので、スキーマを調整してもう一度探す。
if (tUDF == null) {
removeTupleInBag(tInputSchema);
for (FuncSpec tFuncSpec : tArgToFuncMapping) {
Expand All @@ -104,15 +105,16 @@ public static EvalFunc<?> getUDFInstance(String aUDFClassName, Schema aInputSche
}
}
}
// The implementation that only UDF taking the single argument assumes. It is necessary to make implementation in consideration of plural arguments if it supports TupleMax.
// XXX 単一の引数をとる UDF しか想定していない実装。 TupleMax などに対応するなら複数引数を考慮する実装にする必要あり。
// tFuncSpec.getInputArgsSchema() == {()} の場合
// for case of tFuncSpec.getInputArgsSchema() == {()}
if (tUDF == null) {
for (FuncSpec tFuncSpec : tArgToFuncMapping) {
if (tFuncSpec.getInputArgsSchema().getField(0).type == DataType.BAG) {
if (tFuncSpec.getInputArgsSchema().getField(0).schema == null
|| (tFuncSpec.getInputArgsSchema().getField(0).schema.getField(0).type == DataType.TUPLE
&& tFuncSpec.getInputArgsSchema().getField(0).schema.getField(0).schema.size() == 0)) {
// empty Bag schema : {()}
// case of empty Bag schema : {()}
if (Schema.equals(tFuncSpec.getInputArgsSchema(), tInputSchema, true, true)) {
Class<EvalFunc<?>> tUDFClass = getClassForName(tFuncSpec.getClassName());
tUDF = tUDFClass.newInstance();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private void generateChildValue(ArrayList<Object> aResultTuple, ColumnIndexInfor
while (tCurrentColumnIndex.hasChild()) {
ColumnIndexInformation tNextColumnIndex = tCurrentColumnIndex.getChild();
if (tNextColumnIndex.getAccessType() == AccessType.SUB_BAG) {
// subbag 対象の bag を特定
// find a Bag of subbag target
tDataSourceBag = DataType.toBag(tDataSource);
break;
} else {
Expand All @@ -88,7 +88,8 @@ private void generateChildValue(ArrayList<Object> aResultTuple, ColumnIndexInfor
return;
}

// 次層が Tuple なら無視してその次の index
// Set next's next layer of ColumnIndex, if next layer of schema is Tuple.
// 次層が Tuple なら無視してその次の index を設定する。
ColumnIndexInformation tNextColumnIndex = tCurrentColumnIndex.getChild();
int tChildIndex = tNextColumnIndex.getFieldType() == DataType.TUPLE ? tNextColumnIndex.getChild().getIndex() : tNextColumnIndex.getIndex();
Iterator<Tuple> tDataSourceBagIterator = tDataSourceBag.iterator();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public static String toString(ColumnEvaluator aTarget) {
tResultBuilder.append(tTarget.mUDF.getClass().getName());
return tResultBuilder.toString();
} else {
throw new IllegalArgumentException("非対応の型が渡されました : " + aTarget);
throw new IllegalArgumentException("unsupported Class : " + aTarget);
}
}

Expand Down

0 comments on commit d1da83e

Please sign in to comment.