关于 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 的示例和更多解释的主要内容,如果未能解决你的问题,请参考以下文章