ERRORE 1066: imansible aprire iteratore per l’alias in Pig, soluzione generica

Un messaggio di errore molto comune in Apache Pig è:

ERRORE 1066: imansible aprire iteratore per l’alias

Ci sono diverse domande in cui viene menzionato questo errore, ma nessuno di questi fornisce un approccio generico per affrontarlo. Quindi questa domanda:

Cosa fare quando si riceve un ERRORE 1066: imansible aprire iteratore per l’alias?

Il messaggio “ERRORE 1066: imansible aprire iteratore per alias myAlias” suggerisce che c’è qualcosa che non va nella riga in cui si utilizza myAlias.

Tuttavia, di solito vedrai questo errore se qualcosa è andato storto PRIMA di provare a usare questo alias. Quindi la prima cosa da fare è guardare oltre il messaggio di errore e vedere se questo è veramente il primo errore che viene lanciato.

Ecco cosa ho trovato per essere un modo efficace per gestire questo errore quando non ho individuato facilmente un errore precedente:

  1. Esegui il codice fino a poco prima di definire l’alias.
  2. Guarda attentamente, se vedi qualche menzione di ERRORE (spesso è nelle ultime righe, ma a volte può succedere prima)
  3. A questo punto probabilmente hai un errore, in tal caso: affrontalo e vai a 1.
  4. È ansible che tu non abbia un errore prima di incontrare l’alias, in questo caso valuta la linea in cui si verifica l’alias.
  5. Se l’errore si verifica: gestirlo e andare su 4; Se non si verifica alcun errore, eseguire il codice fino a quando non si utilizza l’alias per la seconda volta e andare a 3.

Gli appunti

  • Per eseguire facilmente il codice PIG riga per riga: Apri pig sulla riga di comando (digita semplicemente pig o pig -useHCatalog per esempio)
  • Se ti confondi, assicurati di definire l’alias solo una volta. (Credo che questa sia una buona pratica in generale)

Una volta ho ricevuto questo errore quando utilizzo la funzione SUM. Stavo sumndo i valori che avevano valori nulli tra loro. Dopo aver filtrato i valori nulli nelle righe precedenti, ha funzionato correttamente.