我在使用我的UDF时遇到了猪的访问问题。我已经做了一个分组“集团BY”收到一个输出是(安迪,19495),并描述猪为 C: {group: chararray, long}
。 现在我想将输出格式化为(Andi 19495)作为字符串。但我的UDF报告以下
Pig UDF java出于索引
“从UDF陷入错误:pigUDF.Output,越界进入[指数:1,尺寸: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;
}
}
你可以发布你的猪脚本你也许可以使用CONCAT格式化你的输出,而不是一个UDF –