debugging - variable - rank pig latin




ERREUR 1066: Impossible d'ouvrir l'itérateur de l'alias dans Pig, solution générique (2)

Le message "ERREUR 1066: Impossible d'ouvrir l'itérateur de l'alias myAlias" suggère que quelque chose ne va pas dans la ligne où vous utilisez myAlias.

Cependant, généralement, vous verrez cette erreur si quelque chose ne va pas AVANT que vous essayiez d'utiliser cet alias. La première chose à faire est donc de regarder plus loin dans le message d’erreur et de voir s’il s’agit bien de la première erreur générée.

Voici ce que j’ai trouvé être un moyen efficace de traiter cette erreur lorsque je n’avais pas facilement repéré une erreur antérieure:

  1. Exécutez le code jusqu'à ce que vous définissiez d'abord l'alias.
  2. Regardez attentivement, si vous voyez une mention d'ERREUR (c'est souvent dans les dernières lignes, mais parfois cela peut arriver plus tôt)
  3. A présent, vous avez probablement une erreur, si c'est le cas: résolvez-la et passez à 1.
  4. Il est possible que vous n'ayez pas d'erreur avant de rencontrer l'alias. Dans ce cas, évaluez la ligne où l'alias apparaît.
  5. Si l'erreur se produit: Traitez-la et passez à 4; Si aucune erreur ne se produit, exécutez le code jusqu'à ce que vous utilisiez l'alias pour la deuxième fois, puis passez à l'étape 3.

Remarques:

  • Pour exécuter facilement le code PIG ligne par ligne: Ouvrez pig en ligne de commande (tapez simplement pig ou pig -useHCatalog par exemple)
  • Si vous vous trompez, veillez à ne définir l’alias qu’une fois. (Je crois que c'est une bonne pratique en général)

Un message d'erreur très commun dans Apache Pig est le suivant:

ERREUR 1066: Impossible d'ouvrir l'itérateur pour l'alias

Cette erreur est mentionnée à plusieurs reprises, mais aucune d’entre elles ne donne une approche générique pour la traiter. D'où cette question:

Que faire lorsque vous obtenez une erreur 1066: impossible d'ouvrir un itérateur pour un alias?


Une fois, j'ai reçu cette erreur lors de l'utilisation de la fonction SOMME. Je faisais la somme des valeurs qui avaient zéro. Après avoir filtré les valeurs NULL dans les lignes précédentes, cela a fonctionné correctement.





hdp