使用UDF的输出设置Hive变量

时间:2015-12-11 16:16:29

标签: hadoop hive hiveql udf

我尝试使用UDF函数的输出设置Hive变量,因此我可以在我的.hql脚本中的INSERT INTO myTable中使用该值。

这是myTable的DDL:

CREATE TABLE myTable(
CreationTimestamp TIMESTAMP,
Tablename CHAR(50),
LastExtractedTimestamp TIMESTAMP,
OozieJobID CHAR(40) 
);

以下不起作用:

set hiveconf:ct=select current_timestamp;   
INSERT INTO mytable VALUES ('${hiveconf:ct}','test','2015-12-11 11:25:03.341','testID');

并且这个不起作用(没有引号):

set hiveconf:ct=select current_timestamp;   
INSERT INTO myTable VALUES (${hiveconf:ct}, 'test','2015-12-11 11:25:03.341','testID');

结果是我在表格中插入一行,用空值代替我的变量值:

  

null test 2015-12-11 11:25:03.341 testID

所以现在我使用以下解决方法:

INSERT INTO myTable select * from (select current_timestamp, 'test','2015-12-11 11:25:03.341','testID') as dummy;

您有任何建议或更好的方法来实现这一目标吗?

谢谢; - )

1 个答案:

答案 0 :(得分:3)

这是不可能的。为什么?当您提交查询及其解析查询时,Hive变量将插入到查询中,因此之前 UDF甚至有机会运行。 考虑使用像oozie这样的东西,这样你就可以建立一个模块化的工作流程。