关于 LoadFunc 的示例和更多解释

Posted

技术标签:

【中文标题】关于 LoadFunc 的示例和更多解释【英文标题】:Example and more explanation about LoadFunc 【发布时间】:2012-06-07 02:34:48 【问题描述】:

在哪里可以找到有关 LoadFunc 的更多信息/示例。 除了http://web.archive.org/web/20130701024312/http://ofps.oreilly.com/titles/9781449302641/load_and_store_funcs.html 我没有看到任何使用新 LoadFunc API 的示例。 谁能告诉我在哪里可以找到一些编写 Load UDF 的示例?

【问题讨论】:

【参考方案1】:

从 0.7.0 开始,Pig 加载器扩展了 LoadFunc 抽象类。这意味着它们需要重写 4 个方法:

getInputFormat() 此方法向调用者返回加载程序支持的 InputFormat 实例。实际的加载过程需要在加载时使用一个实例,并且不希望对该实例的创建方式施加任何限制。

prepareToRead() 在读取拆分之前调用。它传入拆分读取期间使用的读取器以及实际拆分。加载器的实现通常会留住阅读器,如果需要,可能希望访问实际的拆分。

setLocation() Pig 调用它来将加载位置传递给加载器,加载器负责将该信息传递给底层的 InputFormat 对象。该方法可以被多次调用,因此不应有与该方法关联的状态(除非该状态在该方法被调用时被重置)。

getNext() 一旦所有设置完成,Pig 调用它从加载器获取下一个元组。如果此方法返回 NULL,Pig 假定通过 prepareToRead() 方法传递的拆分中的所有信息都已处理。

这里有几篇不错的文章来为 Pig 编写自定义加载函数:

Writing a custom PIG Loader Loading protobuf format file into pig script using loadfunc pig UDF

【讨论】:

以上是关于关于 LoadFunc 的示例和更多解释的主要内容,如果未能解决你的问题,请参考以下文章

抽象解释的简短实现示例

关于编译器与解释器

需要关于Rust的细胞和参考计数类型的整体解释

关于卡尔曼滤波和粒子滤波最直白的解释

WEEX学堂关于阿尔法和贝塔最深入浅出的解释

关于可变参数varargs