Red*_*ddy 4 hadoop protocol-buffers apache-pig hadoop-plugins
我对猪的知识很少.我有protobuf格式的数据文件.我需要将此文件加载到pig脚本中.我需要编写一个LoadFunc UDF来加载它.说功能是Protobufloader().
我的PIG脚本会是
A = LOAD 'abc_protobuf.dat' USING Protobufloader() as (name, phonenumber, email);
Run Code Online (Sandbox Code Playgroud)
我想知道的是如何获取文件输入流.一旦我掌握了文件输入流,我就可以将数据从protobuf格式解析为PIG元组格式.
PS:提前谢谢
小智 6
Twitter的开源库大象鸟有很多这样的装载机:https: //github.com/kevinweil/elephant-bird
您可以使用LzoProtobufB64LinePigLoader和LzoProtobufBlockPigLoader. https://github.com/kevinweil/elephant-bird/tree/master/src/java/com/twitter/elephantbird/pig/load
要使用它,您只需要:
define ProtoLoader com.twitter.elephantbird.pig.load.LzoProtobufB64LineLoader('your.proto.class.name');
a = load '/your/file' using ProtoLoader;
b = foreach a generate
field1, field2;
Run Code Online (Sandbox Code Playgroud)
加载后,它将自动转换为具有正确模式的猪元组.
但是,他们假设您在序列化的protobuffer中编写数据并由lzo压缩.
他们在com.twitter.elephantbird.pig.store包中也有相应的编写器.如果您的数据格式有所不同,则可以将其代码调整为自定义加载程序.
| 归档时间: |
|
| 查看次数: |
3082 次 |
| 最近记录: |