我正在对某些数据集进行一些转换,并且需要发布为合理的格式。当前,我运行描述时的最终集如下所示:
{memberId: long,companyIds: {(subsidiary: long)}}
我需要它看起来像这样:
{memberId: long,companyIds: [long] }
companyIds
在哪里是long类型的id数组的键?我真的在努力以这种方式操纵事物?有任何想法吗?我试过使用
FLATTEN
和其他命令来知道是否有效。我正在使用AvroStorage将文件写入此架构:我需要将此数据写入的字段架构如下所示:
"fields": [
{ "name": "memberId", "type": "long"},
{ "name": "companyIds", "type": {"type": "array", "items": "int"}}
]
最佳答案
我知道这有点老,但是最近我遇到了同样的问题。
基于avrostorage documentation,使用最新版本的pig和avrostorage,可以将包直接投射到avro数组。
在您的情况下,您可能需要以下内容:
STORE blah INTO 'blah' USING AvroStorage('schema','{your schema}');
模式中的数组字段在哪里
{
"name":"companyIds",
"type":[
"null",
{
"type":"array",
"items":"long"
}
],
"doc":"company ids"
}
关于hadoop - 用Pig Latin将袋子换成阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17224854/