我正在处理一个序列文件。序列文件中的每条记录都是一个protobuf。
在PIG中我使用elephantbird的SequenceFileLoader和ProtoBuf Converter加载序列文件。
所以,现在我可以看到一个代表protobuf对象的元组。让我们说:
objects: {object: {id: long, name: chararray, nested-object: bytearray}....}.
嵌套对象是另一个具有两个属性(prop1,prop2)的protobuf。
现在,有人可以帮我弄清楚如何将嵌套对象的bytearray转换为另一个元组(prop1,prop2)(不确定元组是否是正确的术语)?
答案 0 :(得分:2)
不确定这是否是最好的方法,但我通过在这些instructions之后编写UDF来解决问题。
我的UDF将采用DataByteArray并返回一个元组。
然后在猪:
nestedObjects = FOREACH objects GENERATE MY_UDF_CONVERTER(nested_object);
答案 1 :(得分:0)
使用我们的数组创建ByteArrayInputStream,然后将其提供给转换器。