是否可以获取会话中设置的配置单元变量的值,如下所示:
> set temp_var=abc;
在自定义自定义自定义项中,我将在同一会话中提前调用它。我不想将变量作为参数传递给udf。我在寻找一种从java中按语法实现的方法。
kninwzqo1#
是的,这是可能的。假设您已通过将以下变量设置到会话中 set 命令或在脚本中。
set
set temp_var=abc;
你可以用 GenericUDF evaluate() 检索方法:
GenericUDF evaluate()
@Override public Object evaluate(DeferredObject[] args) throws HiveException { String myconf; SessionState ss = SessionState.get(); if (ss != null) { HiveConf conf = ss.getConf(); myconf= conf.get("temp_var"); System.out.println("sysout.myconf:"+ myconf); } }
我还建议重写 configure 方法如下: MapReduce 可能由hive启动的程序。
configure
MapReduce
@Override public void configure(MapredContext context) { super.configure(context); JobConf conf = context.getJobConf(); if (conf != null) { String myhiveConf = conf.get("temp_var"); } } }
代码在hive1.2上进行了测试
1条答案
按热度按时间kninwzqo1#
是的,这是可能的。
假设您已通过将以下变量设置到会话中
set
命令或在脚本中。你可以用
GenericUDF evaluate()
检索方法:我还建议重写
configure
方法如下:MapReduce
可能由hive启动的程序。代码在hive1.2上进行了测试