如何在 Java 的 UDF 中获取 hive 变量的值?
Posted
技术标签:
【中文标题】如何在 Java 的 UDF 中获取 hive 变量的值?【英文标题】:How to get the value of hive variable, in the UDF in Java? 【发布时间】:2017-09-05 12:58:58 【问题描述】:是否可以像这样获取在会话中设置的配置单元变量的值:
> set temp_var=abc;
在我将在同一会话中提前调用的自定义 UDF 中。 我不想将变量作为参数传递给 UDF。我正在寻找一种在 java 中以编程方式执行此操作的方法。
【问题讨论】:
【参考方案1】:是的,有可能。
假设您通过set
命令或在脚本中将以下变量设置为会话。
set temp_var=abc;
您可以使用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
方法以支持可能由Hive 启动的MapReduce
程序。
@Override
public void configure(MapredContext context)
super.configure(context);
JobConf conf = context.getJobConf();
if (conf != null)
String myhiveConf = conf.get("temp_var");
代码在 hive 1.2 上测试
【讨论】:
以上是关于如何在 Java 的 UDF 中获取 hive 变量的值?的主要内容,如果未能解决你的问题,请参考以下文章