【问题标题】:Example and more explanation about LoadFunc关于 LoadFunc 的示例和更多解释
【发布时间】:2012-06-07 02:34:48
【问题描述】:
【问题讨论】:
标签:
hadoop
apache-pig
hdfs
【解决方案1】:
从 0.7.0 开始,Pig 加载器扩展了 LoadFunc 抽象类。这意味着它们需要重写 4 个方法:
getInputFormat() 此方法向调用者返回加载程序支持的 InputFormat 实例。实际的加载过程需要在加载时使用一个实例,并且不希望对该实例的创建方式施加任何限制。
prepareToRead() 在读取拆分之前调用。它传入拆分读取期间使用的读取器以及实际拆分。加载器的实现通常会留住阅读器,如果需要,可能希望访问实际的拆分。
setLocation() Pig 调用它来将加载位置传递给加载器,加载器负责将该信息传递给底层的 InputFormat 对象。该方法可以被多次调用,因此不应有与该方法关联的状态(除非该状态在该方法被调用时被重置)。
getNext() 一旦所有设置完成,Pig 调用它从加载器获取下一个元组。如果此方法返回 NULL,Pig 假定通过 prepareToRead() 方法传递的拆分中的所有信息都已处理。
这里有几篇不错的文章来为 Pig 编写自定义加载函数: