【问题标题】:Returning a Map from UDF(Java) in pig从猪的UDF(Java)返回地图
【发布时间】:2014-01-29 04:43:05
【问题描述】:

假设我想从 UDF 返回一个 Map(扩展 EvalFunc)

Map 是 String(Key), Object(value) 。这个对象是一些有 4-5 个字符串字段的类。

我知道为了返回这个复杂的地图,我需要重写 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

}  

感谢和问候, 阿比纳夫

【问题讨论】:

  • 公共类 myUDF 扩展 EvalFunc{

标签: java map apache-pig


【解决方案1】:

您无需在此处设置架构。你只返回一个元素,一个map,Pig 会根据exec 方法的签名知道这一点。 Pig 中的映射没有任何进一步的模式,因为键必须是 chararray 类型,而值可以是任何数据类型。所以本质上它们总是Map&lt;String, Object&gt;类型的对象。

如果您使用此 UDF,然后使用您的别名 DESCRIBE,您应该会看到 Pig 知道您返回了一个地图。

【讨论】:

  • 这很有帮助,谢谢,但是你能指出我如何在 pig 中进一步处理地图(pig chararray)的正确方向吗?我不知道下一步该做什么......我什至无法将其转储以查看它的实际外观。
猜你喜欢
  • 2023-01-28
  • 1970-01-01
  • 2023-03-13
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2019-03-28
  • 2017-05-21
相关资源
最近更新 更多