错误 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(例如,只需键入pig
或pig -useHCatalog
)
如果您感到困惑,请确保您只定义了一次别名。 (我认为这通常是一种很好的做法)
【讨论】:
这打算成为错误消息的通用方法,因此非常欢迎 cmets/改进!【参考方案3】:我曾经在使用 SUM 函数时收到此错误。我正在对其中包含空值的值求和。过滤掉前面几行中的空值后,它就可以正常工作了。
【讨论】:
这将在一般方法的第 4 步中被捕获,但对于这个有用的特定情况确实 +1!以上是关于错误 1066:无法在 Pig 中打开别名的迭代器,通用解决方案的主要内容,如果未能解决你的问题,请参考以下文章
错误 1066:无法打开别名的迭代器 - PIG SCRIPT