转自 http://www.tbdata.org/archives/716
对于一般的参数,hive有以下的几种设置方式:
1》配置文件:
2》命令行参数:
3》set参数声明:
配置文件包括:
用户自定义配置文件:$HIVE_CONF_DIR/hive-site.xml
默认配置文件:$HIVE_CONF_DIR/hive-default.xml
用户自定义配置会覆盖默认配置。
另外,hive也会读入hadoop的配置,因为hive是作为hadoop的客户端启动的。
hadoop的配置文件包括:
$HADOOP_CONF_DIR/hive-site.xml
$HADOOP_CONF_DIR/hive-default.xml
hive的配置会覆盖hadoop的配置。
配置文件的设定对本机的所有hive进程都有效。
命令行参数:
启动hive(客户端或者server方式)的时候,可以在命令行添加-hiveconf param=value来设定参数,例如:
hive -hiveconf hive.root.logger=INFO,console
这一设定对本次session有效(如果以server的方式启动,则对于所有请求的session有效)
参数声明:
通过set设定来实现:
set mapred.reduce.tasks=100
作用域也是 session级别的。
这三种设置的方式,优先级依次递增:即参数声明的配置会覆盖命令行参数,命令行参数会覆盖配置文件。
注意:某些系统级参数,如log4j的参数,必须使用前两种方式来设置,因为那些参数的读取在session建立之前就完成。
另外 SerDe参数必须在DDL建表的时候进行声明