ฉันมีปัญหาในการเข้าถึง pig ด้วย UDF ของฉัน ฉันได้ทำการจัดกลุ่ม "จัดกลุ่มตาม" ที่ได้รับผลลัพธ์ซึ่งก็คือ (Andi, 19495) และอธิบายโดย pig เป็น C: {group: chararray, long}
ตอนนี้ฉันต้องการจัดรูปแบบเอาต์พุตเป็น (Andi 19495) เป็นสตริง แต่ UDF ของฉันรายงาน
ต่อไปนี้
"Caught error from UDF: pigUDF.Output, Out of bounds access [Index: 1, Size: 1]"
ฉันไม่เข้าใจว่าทำไมสิ่งนี้จึงเกิดขึ้น
นี่คือ Java UDF ของฉัน:
package pigUDF;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.BagFactory;
import org.apache.pig.data.DataType;
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
import org.apache.pig.impl.logicalLayer.schema.Schema;
import org.apache.pig.impl.logicalLayer.schema.Schema.FieldSchema;
public class Output extends EvalFunc<Tuple>{
TupleFactory tupleFactory = TupleFactory.getInstance();
BagFactory mBagFactory = BagFactory.getInstance();
private static Tuple nullValue=TupleFactory.getInstance().newTuple(2);
@Override
public Tuple exec(Tuple input) throws IOException {
if (input==null) return nullValue;
Tuple t= tupleFactory.newTuple(1);
String o = (String) input.get(0);
int o1 = (Integer) input.get(1);
String myString=o+" "+String.valueOf(o1);
System.out.println(myString);
t.set(0,myString);
return t;
}
@Override
public Schema outputSchema(Schema input){
Schema tupleSchema = new Schema();
tupleSchema.add(new FieldSchema("group", DataType.CHARARRAY));
Schema s = new Schema (new FieldSchema(null, tupleSchema));
return s;
}
}