2009-12-02 @ taobao
上下文环境
hive语句执行中, 也可像oracle一样设置一些环境参数的.
环境变量设置:
设置mapreduce的reduce任务数.
set mapred.reduce.tasks=300;
设置输出是否压缩
set hive.exec.compress.output='false';
配置Streaming执行文件
add file /home/jushi/public/properties.py;
自定义函数声明
CREATE TEMPORARY FUNCTION date_format AS 'com.taobao.hive.udf.UDFDateFormat';
Hive shell中应用
进入Hive shell后, 直接键入设置语句即可, 如:
hive> set mapred.reduce.tasks=300;
![]() |
注意 上下文环境一旦设置, 有效范围仅限于当前shell内之后执行的sql语句, 在退出shell后一切环境恢复初始状态. |
开发Hivelet中应用
![]() |
Hivelet运行内幕 hivelet文件(.sql文件)在生产环境中, 会由hqlexec-1.0.jar(以下简称hqlexec)读取并逐行执行. hqlexec读取文件后的过程是:
|
由于HiveQL语句是通过hive -e "$HiveQL" 执行的, 所以Hivelet的编写中, 环境设置的语句应该置于应用环境设置的数据处理语句(如Insert)之前. 如:
set mapred.reduce.tasks=300;
set hive.exec.compress.output='false';
INSERT OVERWRITE TABLE r__properties PARTITION (pt='$env.lastPartition')
...;
![]() |
环境设置有效范围的陷阱 环境设置一旦声明, 将会后续的所有数据处理语句都有效. 如:
在insert表t_user和t_auction时, 输出压缩的配置将都生效, 即写入时都不压缩.
|