Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
792 views
in Technique[技术] by (71.8m points)

hadoop - How to pass Hive conf variable in hive udf?

I want to pass hive conf variable to hive UDF.

below is a code snippet.

hive -f ../hive/testHive.sql -hivevar testArg=${testArg}

Below is hive UDF call.

select setUserDefinedValueForColumn(columnName,'${testArg}') from testTable;

In udf I am getting value of testArg as null.

Please advice me how to use hive conf variable in udf and how to access Hive configuration in hive UDF?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think that you should pass hive variable as 'hiveconf' using below command:

hive --hiveconf testArg="my test args" -f ../hive/testHive.sql

Then you may have below code inside a GenericUDF evaluate() method:

@Override
 public Object evaluate(DeferredObject[] args) throws HiveException {
    String myconf;
    SessionState ss = SessionState.get();
    if (ss != null) {
        HiveConf conf = ss.getConf();
        myconf= conf.get("testArg");
        System.out.println("sysout.myconf:"+ myconf);
    }
}

The code is tested on hive 1.2


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...