从 hive -h:
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
最佳答案
我觉得文档中的示例并不足够,因此这是我的答案。
最初只有--hiveconf
,不存在变量替换。--hiveconf
选项允许用户从命令行设置Hive configuration values就是这样。所有Hive配置值都存储在hiveconf
命名空间下,即hiveconf:mapred.reduce.tasks
。这些值使您可以控制诸如映射器和化简器的数量,是否应显示状态消息以及脚本是否应继续执行错误等操作。
稍后,variable substitution was added。这意味着您现在可以在查询中使用${...}
语法使用变量。但是,您只能在命令行中使用hiveconf
在--hiveconf
命名空间下设置变量,因此用户可以在此处放置变量。
将您的个人变量放在Hive配置 namespace 下可能不会破坏任何内容,但这也不是一种好的形式。后来,it was suggested专门为用户变量添加了hivevar
命名空间,该命名空间也可以在命令行使用--hivevar
进行定义。这意味着在Hive配置值和用户定义的变量之间更清晰的分隔。
总结:
应当使用hiveconf
命名空间和--hiveconf
设置Hive配置值。hivevar
命名空间和--hivevar
应该用于定义用户变量。
在hiveconf
命名空间下设置用户变量可能不会破坏任何内容,但不建议这样做。