繁体   English   中英

使用AliasableEvalFunc并在Java UDF中读取一袋元组

[英]Using AliasableEvalFunc and reading a bag of tuples in Java UDF

我有一个Pig脚本,该脚本发送一个元组,该元组又将一袋元组发送到Java UDF。 在UDF中,我使用AliasableEvalFunc通过别名读取元组。 我能够通过其别名读取包,但不能通过其别名读取包中的元组。 例如:假设Pig将其发送到UDF:

data = load 'input' using PigStorage(',') as (title:chararray,entities:bag{tuple:(entityName:chararray)});
data = foreach data generate udf(title,entities);

包含示例数据的文件如下所示:

ThisIsTitle,{(SampleName)}

这是我的UDF:

class Udf extends AliasableEvalFunc<Tuple> {
    public Tuple exec(Tuple input) {
        String title = getString(input, "title"); //works
        DataBag entities = getBag(input, "entities"); //works
        for (Tuple entity : entities) {
            String name = getString(entity, "entityName"); // this throws an exception
        }
    }
}

本质上发生的是,我只能在第一级上引用别名。 对于任何嵌套的东西,我无法通过别名调用get。 这是预期的还是我做错了什么?

我发现我们需要使用getPrefixedAliasName方法来获取内部元组的别名。 AliasableEvalFunc.java文件包含有关此示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM