2

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

4

1 回答 1

6

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

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

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

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

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

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

于 2012-06-07T07:07:52.483 回答