假设我想从udf返回一个Map(extends evalfunc)
Map是字符串(键),对象(值)。这个对象是有4-5个字符串字段的类。
我知道为了返回这个复杂的Map,我需要重写outputschema。但我不知道我将返回什么样的模式。
public class myUDF extends EvalFunc<Map>{
public Map exec(Tuple input) throws IOException{
Map<String, myClass> map = new HashMap<String, myClass>();
// Create a Map
return map;
}
public Schema outputSchema(Schema input){
try{
return new Schema... // How I will define my Schema
}
catch(FrontendException e){
return null;
}
}
public myClass{
String field1; String field2; String field3;
// getters and Setters
}
谢谢和问候,阿比纳夫
1条答案
按热度按时间vcudknz31#
您不需要在这里设置模式。您只返回一个元素,一个
map
,pig将根据exec
方法。pig中的Map没有任何进一步的模式,因为键必须是类型chararray
值可以是任何数据类型。所以从本质上说,它们总是类型的对象Map<String, Object>
.如果你用这个自定义项
DESCRIBE
你的别名,你应该看到Pig知道你已经返回了一个Map。