ERRO 1066: Não é possível abrir o iterador para o alias em Pig, solução genérica

Uma mensagem de erro muito comum no Apache Pig é:

ERRO 1066: Não é possível abrir o iterador para o alias

Existem várias questões em que esse erro é mencionado, mas nenhuma delas oferece uma abordagem genérica para lidar com ele. Daí esta pergunta:

O que fazer quando você recebe um ERRO 1066: Não é possível abrir o iterador para o alias?

A mensagem “ERRO 1066: não é possível abrir o iterador para alias myAlias” sugere que há algo errado na linha em que você usa myAlias.

No entanto, normalmente você verá esse erro se algo deu errado antes de tentar usar esse alias. Portanto, a primeira coisa a fazer é procurar mais adiante na mensagem de erro e ver se esse é realmente o primeiro erro que é lançado.

Aqui está o que eu encontrei para ser uma maneira eficiente de lidar com esse erro quando não identifiquei facilmente um erro anterior:

  1. Execute o código até antes de definir o alias pela primeira vez.
  2. Olhe com cuidado, se você vê alguma menção de ERRO (muitas vezes é nas últimas linhas, mas às vezes isso pode acontecer mais cedo)
  3. Até agora você provavelmente tem um erro, se assim for: lide com isso e vá para 1.
  4. É possível que você não tenha um erro antes de encontrar o alias, nesse caso, avalie a linha em que o alias ocorre.
  5. Se o erro ocorrer: Lide com ele e vá para 4; Se nenhum erro ocorrer, execute o código até antes de usar o alias pela segunda vez e vá para 3.

Notas

  • Para executar facilmente o código PIG linha por linha: Abra o porco na linha de comando (Simplesmente digite pig ou pig -useHCatalog por exemplo)
  • Se você ficar confuso, certifique-se de definir apenas o alias uma vez. (Eu acredito que esta é uma boa prática em geral)

Uma vez recebi esse erro ao usar a function SUM. Eu estava sumndo valores que tinham nulos entre eles. Depois de filtrar os valores nulos nas linhas anteriores, funcionou corretamente.