FEHLER 1066: Iterator für Alias ​​in Pig, Generische Lösung, konnte nicht geöffnet werden

Eine sehr häufige Fehlermeldung in Apache Pig ist:

FEHLER 1066: Kann Iterator für Alias ​​nicht öffnen

Es gibt mehrere Fragen, in denen dieser Fehler erwähnt wird, aber keiner von ihnen gibt einen allgemeinen Ansatz für den Umgang damit. Daher diese Frage:

Was tun, wenn Sie einen Fehler 1066 erhalten: Kann Iterator für Alias ​​nicht öffnen?

Die Meldung “ERROR 1066: Iterator für alias myAlias ​​kann nicht geöffnet werden” deutet darauf hin, dass in der Zeile, in der Sie myAlias ​​verwenden, etwas nicht in Ordnung ist.

In der Regel wird dieser Fehler jedoch angezeigt, wenn etwas schief gelaufen ist, BEVOR Sie versuchen, diesen Alias ​​zu verwenden. So ist das erste, was zu tun ist, die Fehlermeldung weiter nachzuschauen und zu sehen, ob dies wirklich der erste Fehler ist, der ausgetriggers wird.

Hier ist, was ich gefunden habe, um eine effiziente Möglichkeit, mit diesem Fehler umzugehen, wenn ich nicht leicht einen früheren Fehler entdecken:

  1. Führen Sie den Code bis kurz vor dem Definieren des Alias ​​aus.
  2. Schauen Sie genau hin, ob Sie ERROR erwähnen (oft in den letzten Zeilen, aber manchmal kann das früher passieren)
  3. Wahrscheinlich hast du jetzt einen Fehler, falls ja: geh damit um und geh zu 1.
  4. Es ist möglich, dass vor dem Alias ​​kein Fehler auftritt. In diesem Fall sollten Sie die Zeile auswerten, in der der Alias ​​auftritt.
  5. Wenn der Fehler auftritt: Behandeln Sie es und gehen Sie zu 4; Wenn kein Fehler auftritt, führen Sie den Code bis kurz vor der zweiten Verwendung des Alias ​​aus und wechseln Sie zu 3.

Anmerkungen

  • Um den PIG-Code zeilenweise einfach auszuführen: Öffnen Sie in der Befehlszeile pig -useHCatalog einfach pig oder pig -useHCatalog )
  • Wenn Sie verwirrt sind, stellen Sie sicher, dass Sie den Alias ​​nur einmal definieren. (Ich glaube, das ist eine gute Übung im Allgemeinen)

Ich habe diesen Fehler einmal bei Verwendung der function SUMME erhalten. Ich fasste Werte zusammen, die unter ihnen Nullen hatten. Nach dem Ausfiltern der Nullwerte in den vorherigen Zeilen funktionierte es ordnungsgemäß.