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.
Puedes referir esto por la diferencia.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VariableSubstitution
Hay tres espacios de nombres para las variables: hiveconf, system y env. ( Las variables personalizadas también se pueden crear en un espacio de nombres separado con la opción define o hivevar en Hive 0.8.0 y versiones posteriores).