用udf的输出设置hive变量

v09wglhw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(338)

我试图用一个udf函数的输出设置一个hive变量,这样我就可以在 INSERT INTO myTable 稍后在我的.hql脚本中。
这是我的ddl myTable :

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');

结果是我在表中插入了一行,用空值代替变量的值:
空测试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;

你有什么建议或更好的方法来实现这一点吗?
谢谢;-)

mkshixfv

mkshixfv1#

这是不可能的。为什么?当您提交查询并解析查询时,配置单元变量会插入到查询中,因此在udf有机会运行之前。考虑使用类似oozie的工具,这样您就可以实际构建一个模块化的工作流。

相关问题