Hadoop pig avro:如何自定义avrostorage加载文件的方式

Hadoop pig avro:如何自定义avrostorage加载文件的方式,hadoop,apache-pig,avro,Hadoop,Apache Pig,Avro,我有一个要求,我们需要使用avrostorage自定义在pig中加载文件的方式: 例如,我有一个具有以下模式的avro文件: {"namespace": "avroColorCount", "type": "record", "name": "User2", "fields": [ {"name": "name", "type": "string"}, {"name": "content", "type" : "bytes" } ] } 现在,如果我使用下面的命令

我有一个要求,我们需要使用avrostorage自定义在pig中加载文件的方式:

例如,我有一个具有以下模式的avro文件:

{"namespace": "avroColorCount",
 "type": "record",
 "name": "User2",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "content", "type" :  "bytes" }
 ]
}
现在,如果我使用下面的命令,其工作正常:

x = load 'sample.avro' USING AvroStorage() AS (name: chararray, content: bytearray);
但是,如果我只想加载“内容”(第二列),我该怎么做

如果我给

x = load 'sample.avro' USING AvroStorage() AS (content: bytearray);
这给了我一个错误:

ERROR 1031: Incompatable schema: left is "content:bytearray", right is "name: chararray, content: bytearray"
我知道这可以通过过滤器来完成

但我们的要求是在一个步骤中单独获得第二列

这可能吗


提前感谢…

下面的代码解决了这个问题

x = LOAD 'sample.avro' USING AvroStorage('{"type":"record","name":"User2","fields":[{"name":"content","type":"bytearray"}]}');