gpt4 book ai didi

hadoop - 使用 loadfunc pig UDF 将 protobuf 格式文件加载到 pig 脚本中

转载 作者:可可西里 更新时间:2023-11-01 14:21:37 25 4
gpt4 key购买 nike

我对 pig 知之甚少。我有 protobuf 格式的数据文件。我需要将此文件加载到 pig 脚本中。我需要编写一个 LoadFunc UDF 来加载它。说函数是 Protobufloader()

我的 PIG 脚本是

A = LOAD 'abc_protobuf.dat' USING Protobufloader() as (name, phonenumber, email);

我只想知道如何获取文件输入流。一旦我掌握了文件输入流,我就可以将数据从 protobuf 格式解析为 PIG 元组格式。

PS:提前致谢

最佳答案

Twitter 的开源库 elephant bird 有很多这样的加载器: 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;

加载后,它将自动转换为具有适当架构的 pig 元组。

但是,他们假设您将数据写入序列化的 protobuffer 并由 lzo 压缩。

他们也有相应的作者,在 com.twitter.elephantbird.pig.store 包中。如果您的数据格式有点不同,您可以调整他们的代码以适应您的自定义加载器。

关于hadoop - 使用 loadfunc pig UDF 将 protobuf 格式文件加载到 pig 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com