PIG - 如何顺序调用多个商店命令

时间:2014-05-14 14:52:29

标签: multithreading hadoop apache-pig

我在自己的商店功能TestStorage中实现了一些逻辑。现在,我想在我的PIG脚本中多次调用此存储函数,并要求按顺序处理存储操作(!)。

一个例子:

STORE rows INTO 'dummy'
USING TestStorage;


STORE rows INTO 'dummy2'
USING TestStorage;

我认为PIG实际上是为每个商店操作启动两个线程。导致以下操作顺序:

Init TestStorage
Init TestStorage
Finished TestStorage
Finished TestStorage

如果我在本地模式下运行PIG脚本,我找到了一种方法。通过在我的TestStorage类中简单地使用ReentrentLock,我可以停止其中一个线程,直到另一个完成迭代遍历所有元组,给出了以下操作顺序:

Init TestStorage
Finished TestStorage
Init TestStorage
Finished TestStorage

然而,除了以上解决方案不是很好的事实,它不适用于我们的Hadoop集群:-(在我们的实时系统上,两个线程仍然并行工作。 也许这与存储函数在reducer任务中运行这一事实有关。

更新 我发现在一个reducer任务中,PIG迭代HDFS中的输入数据,并且每个元组将这个元组发送到第一个,然后发送到第二个存储实例。因此,两个商店运营将并行工作: - (

知道如何规避这个问题吗?例如,是否有一种方法可以将HDF中的文件用作第二次存储操作的输入?

提前致谢! 塞巴斯蒂安

0 个答案:

没有答案