tutorial spark pig meaning game hadoop hive hiveql

hadoop - spark - hive meaning



¿Cuál es la diferencia entre-hivevar y-hiveconf? (4)

De la colmena -h:

--hiveconf <property=value> Use value for given property --hivevar <key=value> Variable subsitution to apply to hive commands. e.g. --hivevar A=B


@Llama lo ha explicado en detalle, junto con que a ambos tipos de variables se accede de manera diferente.

Se --hivevar variables --hivevar usando ${var-name} , mientras que se accede a ${hiveconf:var-name} dentro de la sección.

Ej. A continuación, los ejemplos acceden a la variable e imprimen su valor en la colmena

colmena

hive --hivevar a=''this is a'' -e ''!echo ${a};''

salida: this is a

hiveconf:

hive --hiveconf a=''this is a'' -e ''!echo ${hiveconf:a};''

salida: this is a


No hay diferencia, excepto el espacio de nombres. hiveconf y hivevar son diferentes espacios de nombres. hivevar espacio de nombres hivevar se agregó solo al espacio de nombres de las propiedades de configuración y al espacio de nombres de las variables de Hive. Consulte https://issues.apache.org/jira/browse/HIVE-2020 para obtener más información.


No sentí que los ejemplos de la documentación fueran adecuados, así que aquí está mi intento de respuesta.

Al principio solo --hiveconf y no existía la sustitución de variables.

La opción --hiveconf permitía a los usuarios configurar los valores de configuración de Hive desde la línea de comandos y eso era todo. Todos los valores de configuración de Hive se almacenan en el espacio de nombres hiveconf , es decir, hiveconf:mapred.reduce.tasks . Estos valores le permitieron controlar cosas como la cantidad de asignadores y reductores, si se deben mostrar los mensajes de estado y si el script debe continuar con los errores.

Posteriormente, se agregó la sustitución de variables . Esto significaba que ahora podría usar variables en consultas con la sintaxis ${...} . Sin embargo, las únicas variables que podría establecer desde la línea de comandos estaban bajo el espacio de nombres --hiveconf usando --hiveconf , de modo que es donde los usuarios colocan sus variables.

Poner sus variables personales bajo el espacio de nombres de configuración de Hive probablemente no rompa nada, pero tampoco es bueno. Más tarde, se sugirió que se hivevar un espacio de nombres hivevar específicamente para las variables de usuario que también podrían definirse en la línea de comandos usando --hivevar . Esto significó una separación más limpia entre los valores de configuración de Hive y las variables definidas por el usuario.

En resumen:
El espacio de nombres hiveconf y --hiveconf deben usarse para establecer los valores de configuración de Hive.
El espacio de nombres hivevar y --hivevar deben usarse para definir variables de usuario.
Configurar las variables de usuario bajo el espacio de nombres hiveconf probablemente no rompa nada, pero no es recomendable.