我正在一些数据集上做一些转换,需要发布到一个看起来正常的格式。当我运行时,当前我的最后一组是这样的描述:
{memberId: long,companyIds: {(subsidiary: long)}}
我需要它看起来像这样:
{memberId: long,companyIds: [long] }
哪里 companyIds
类型为long的id数组的键是否为long?
我真的很纠结于如何用这种方式操纵事物?有什么想法吗?我试过用 FLATTEN
以及其他命令。我正在使用avrostorage将文件写入此架构:
我需要将此数据写入的字段架构如下所示:
"fields": [
{ "name": "memberId", "type": "long"},
{ "name": "companyIds", "type": {"type": "array", "items": "int"}}
]
2条答案
按热度按时间hmtdttj41#
pig中没有数组类型(http://pig.apache.org/docs/r0.10.0/basic.html#data-类型)。但是,如果您只需要一个好看的输出,并且companyid中没有太多元素,那么您可能需要编写一个简单的udf,将包转换成一个格式良好的字符串。
java代码
Pig手稿
m3eecexj2#
我知道这有点老了,但我最近遇到了同样的问题。
基于avrostorage文档,使用最新版本的pig和avrostorage,可以直接将包投射到avro阵列。
在您的情况下,您可能需要:
其中架构中的数组字段是