我正在对某些数据集进行一些转换,并且需要发布为合理的格式。当前,我运行描述时的最终集如下所示:

{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/

10-11 07:50