在pig中从udf(java)返回Map

busg9geu  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(455)

假设我想从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

}

谢谢和问候,阿比纳夫

vcudknz3

vcudknz31#

您不需要在这里设置模式。您只返回一个元素,一个 map ,pig将根据 exec 方法。pig中的Map没有任何进一步的模式,因为键必须是类型 chararray 值可以是任何数据类型。所以从本质上说,它们总是类型的对象 Map<String, Object> .
如果你用这个自定义项 DESCRIBE 你的别名,你应该看到Pig知道你已经返回了一个Map。

相关问题