我是 Pig 新手,我的输入数据格式如下
Record1:
{
label:int,
id: long
},
Record 2:
{
...
}
...
我想要的输出是得到
Record 1:
{
data:{
label:int,
id:long
}
},
Record 2:
{
...
}
...
我试过:
result = FOREACH input GENERATE (id, label) AS data;
但这会导致嵌套的元组结构如下所示:
Record 1:
{
data:{
TUPLE_1:{
label:int,
id: long
}
}
}
我怎么能去掉另一个袋子“TUPLE_1”,看起来我错过了一个微不足道的设置。
最佳答案
您可能需要在存储数据时指定模式。 如果您使用 org.apache.pig.piggybank.storage.avro.AvroStorage,它可以将模式定义作为参数。
result = FOREACH input GENERATE label:int, id:long;
STORE result INTO 'result.avro' USING org.apache.pig.piggybank.storage.avro.AvroStorage('schema', '{"type": "record","name": "data","fields": [{"name": "label","type": "int"},{"name": "id", "type": "long"}]}');
关于hadoop - 如何使用 Pig 脚本生成嵌套的 Avro 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416961/