ejemplos curso colecciones debugging apache-pig hortonworks-data-platform hdp

debugging - curso - ERROR 1066: no se puede abrir el iterador para alias en Pig, solución genérica



colecciones java ejemplos (2)

Un mensaje de error muy común en Apache Pig es:

ERROR 1066: no se puede abrir el iterador para el alias

Hay varias preguntas en las que se menciona este error, pero ninguna de ellas ofrece un enfoque genérico para tratarlo. De ahí esta pregunta:

¿Qué hacer cuando obtienes un ERROR 1066: no se puede abrir el iterador para el alias?


El mensaje "ERROR 1066: no se puede abrir el iterador para alias myAlias" sugiere que hay algo que va mal en la línea donde usa myAlias.

Sin embargo, generalmente verá este error si algo salió mal ANTES de que intente usar este alias. Entonces, lo primero que debe hacer es buscar más a lo largo del mensaje de error y ver si este es realmente el primer error que se produce.

Esto es lo que encontré como una forma eficiente de lidiar con este error cuando no detecté fácilmente un error anterior:

  1. Ejecute el código hasta justo antes de definir el alias por primera vez.
  2. Mire cuidadosamente, si ve alguna mención de ERROR (a menudo está en las últimas líneas, pero a veces esto puede suceder antes)
  3. A estas alturas probablemente tenga un error, si es así: lidie con él y pase al 1.
  4. Es posible que no tenga un error antes de encontrar el alias, en este caso evalúe la línea donde se produce el alias.
  5. Si se produce el error: lidiar con él y pasar a 4; Si no se produce ningún error, ejecute el código hasta justo antes de usar el alias por segunda vez y vaya a 3.

Notas:

  • Para ejecutar fácilmente el código PIG línea por línea: Abra pig en la línea de comando (simplemente escriba pig o pig -useHCatalog por ejemplo)
  • Si se confunde, asegúrese de definir el alias solo una vez. (Creo que esta es una buena práctica en general)

Una vez recibí este error al usar la función SUMA. Estaba sumando valores que tenían valores nulos entre ellos. Después de filtrar los valores nulos en las líneas anteriores, funcionó correctamente.