错误 1066:无法在 Pig 中打开别名的迭代器,通用解决方案

Posted

技术标签:

【中文标题】错误 1066:无法在 Pig 中打开别名的迭代器,通用解决方案【英文标题】:ERROR 1066: Unable to open iterator for alias in Pig, Generic solution 【发布时间】:2016-04-02 09:29:01 【问题描述】:

Apache Pig 中一个非常常见的错误消息是:

错误 1066:无法打开别名的迭代器

有几个问题提到了这个错误,但没有一个给出处理它的通用方法。因此这个问题:

收到 ERROR 1066: Unable to open iterator for alias 怎么办?

【问题讨论】:

【参考方案1】:

只需在另一个命令窗口中尝试就不会出错

【讨论】:

请在回答或给出解决方案时详细说明。如果您测试过任何代码行,也请分享一些示例。 除非你做了一些非常奇怪的事情,否则这不应该解决问题,因为它是一个结构性问题。【参考方案2】:

消息“ERROR 1066: Unable to open iterator for alias myAlias”表明您使用 myAlias 的行有问题。

但是,如果在您尝试使用此别名之前出现问题,通常您会看到此错误。因此,首先要做的是进一步查找错误消息,看看这是否真的是引发的第一个错误。

当我没有轻易发现较早的错误时,我发现这是一种处理此错误的有效方法:

    在您首次定义别名之前运行代码。 仔细查看,您是否看到任何提及 ERROR(通常在最后几行,但有时可能更早发生) 现在你可能有一个错误,如果是这样:处理它并转到 1。 在遇到别名之前可能没有错误,在这种情况下,请评估出现别名的行。 如果出现错误:处理,转4;如果没有出现错误,则运行代码,直到您第二次使用别名之前,然后转到 3。

注意事项:

轻松逐行运行 PIG 代码:在命令行中打开 pig(例如,只需键入pigpig -useHCatalog) 如果您感到困惑,请确保您只定义了一次别名。 (我认为这通常是一种很好的做法)

【讨论】:

这打算成为错误消息的通用方法,因此非常欢迎 cmets/改进!【参考方案3】:

我曾经在使用 SUM 函数时收到此错误。我正在对其中包含空值的值求和。过滤掉前面几行中的空值后,它就可以正常工作了。

【讨论】:

这将在一般方法的第 4 步中被捕获,但对于这个有用的特定情况确实 +1!

以上是关于错误 1066:无法在 Pig 中打开别名的迭代器,通用解决方案的主要内容,如果未能解决你的问题,请参考以下文章

错误 1066:无法打开别名的迭代器 - PIG SCRIPT

Java中的Pig UDF:错误---错误1066:无法打开别名的迭代器

ERROR 1066:无法打开别名结果的迭代器

pig中“无法打开别名的迭代器”是啥意思?

Apache Pig 和用户定义函数

无法在猪中打开别名的迭代器