Hive código de retorno 2 y la diferencia entre concat y concat_ws

(Autor: Chen Yuju data-master.net )

1. Error de código de retorno 2

Cuando ejecuto números con Hive, a menudo encuentro un error:

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

Con respecto a este error, hay bastantes soluciones en Internet. Algunos dicen que reemplace el motor con Tez. Probé esto, pero parece que no funcionó. Algunas personas sí. La causa raíz de este código de retorno 2 puede ser diferente. Se dice que el problema es la cantidad de datos. También me he encontrado con esta situación, es decir, unir una tabla muy grande y hay muchas claves primarias duplicadas, lo que resulta en una explosión de datos. Después de eliminar el proceso de unión, el problema desaparecerá. ser resuelto. .

Con respecto a este error, la declaración más confiable es: **Este error no es el error más importante, debe verificar el registro. ** Hablemos de un error que descubrí al revisar los registros. Hace mucho tiempo, y las capturas de pantalla de los registros no se guardan.

Dos, Concat_ws y concat

El problema específico es que cuando estaba haciendo ingeniería de funciones, usé una función como concat(A,B) + str_to_map para generar múltiples funciones con diferente lógica derivada en la tabla intermedia. Esta operación siempre me da un código de retorno de error 2 en Hive, pero no informa un error en Spark-Sql .

Revisé por este motivo durante mucho tiempo (no sabía cómo leer el registro al principio, y simplemente ejecuté el resultado aturdido con spark-sql). Luego, al examinar los datos resultantes, se reveló el problema. Por ejemplo, en mi tabla básica, obviamente hay datos A, pero no hay datos B, entonces el resultado de concat (A, B) espero que tenga la forma de AB, y el resultado de que se agote spark-sql está vacío. . En este momento, recordé mirar el error informado en el registro de Hive, lo que significa: concat no puede tener valores nulos. De repente me di cuenta de que Hive elige informar un error cuando concat procesa un valor nulo, mientras que spark-sql tiene un valor nulo predeterminado. Por lo tanto, la cuestión clave es lidiar con el problema de los valores nulos en concat.

Al final, lo que adopté fue reemplazar concat(A,B) con concat_ws('',A,B). concat_ws puede manejar valores nulos. Al final, hay un caso en el que B está vacío en A, y el el resultado es A como esperaba En lugar de estar vacío.

Entonces, dos conclusiones:

  1. El código de retorno 2 todavía tiene que verificar el registro de Hive y no se puede ignorar porque a veces spark-sql no informa un error.
  2. Otro, si puede haber valores nulos en los elementos a empalmar, se recomienda usar concat_ws en lugar de concat.

Espero que el código de todos tenga menos errores~

Supongo que te gusta

Origin blog.csdn.net/weixin_39750084/article/details/106462632
Recomendado
Clasificación