[英]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.