我有一个以下数据的例子
id : long,
list: {(itemId: Long, itemName: charArray)}
Run Code Online (Sandbox Code Playgroud)
在我的数据中,列表可以是一包元组或null.我想将null更改为空包(由0个元素组成)
我尝试过类似的东西:
answer = FOREACH data
GENERATE (list is null ? {} : list) AS list;
Run Code Online (Sandbox Code Playgroud)
它说{}和list不是兼容的模式.我想知道如何创建一个兼容架构的空包
我最终这样做了,它起作用了:
answer = FOREACH data
GENERATE (list is null ? (bag{tuple(long,chararray)}){} : list) AS list:{(itemId: long, itemName: charArray)};
Run Code Online (Sandbox Code Playgroud)
{}没有类型.包里面总是有一个元组类型.list你的空包需要有相同的类型.
不幸的是,我没有Pig up,我可以为你测试这个,我不确定该怎么做,但它会有点像这样......我找不到好的关于如何设置包的类型的文档...
试试吧?
answer = FOREACH data
GENERATE (list is null ? (bag{tuple(long,chararray)}){} : list) AS list;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6479 次 |
| 最近记录: |