我有以下数据的例子
id : long,
list: {(itemId: Long, itemName: charArray)}
在我的数据中,list 可以是一包元组或 null。我想把null改成一个空包(由0个元素组成)
我试过类似的东西:
answer = FOREACH data
GENERATE (list is null ? {} : list) AS list;
它说 {} 和 list 是不兼容的架构。我想知道如何创建一个具有兼容架构的空包
我最终这样做了并且成功了:
answer = FOREACH data
GENERATE (list is null ? (bag{tuple(long,chararray)}){} : list) AS list:{(itemId: long, itemName: charArray)};
最佳答案
{}
没有任何类型。袋子里面总是有一个元组类型。 list
和你的空包需要有相同的类型。
不幸的是,我没有 Pig up 可以为你测试这个,我不确定具体怎么做,但它会是这样的......我不能'找不到关于如何设置包类型的好文档...
也许试试这个?
answer = FOREACH data
GENERATE (list is null ? (bag{tuple(long,chararray)}){} : list) AS list;
关于Hadoop:如果 Pig 中的字段为空,则创建空包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20509581/