我想把hive conf变量传递给hive udf。
下面是一个代码片段。
hive -f ../hive/testHive.sql -hivevar testArg=${testArg}
下面是配置单元自定义项调用。
select setUserDefinedValueForColumn(columnName,'${testArg}') from testTable;
在udf中,我得到testarg的值为null。
请告诉我如何在自定义项中使用配置单元配置变量,以及如何在配置单元自定义项中访问配置单元配置?
2条答案
按热度按时间alen0pnh1#
不能使用将配置单元变量直接传递给视图${hiveconf:testarg}在视图代码中,因为在视图创建过程中,配置单元将精确获取变量的值,因此视图将是静态的。
唯一的机会是使用udf访问配置单元变量:
您可以使用genericudf。它有一个方法configure,该方法将mapredcontext作为参数。因此,需要在genericudf中指定configure方法,如:
这只在mapredtask的运行时调用。
gv8xihay2#
我认为应该使用以下命令将配置单元变量传递为“hiveconf”:
那么在一个
GenericUDF evaluate()
方法:代码在hive1.2上进行了测试