我试图用一个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;
你有什么建议或更好的方法来实现这一点吗?
谢谢;-)
1条答案
按热度按时间mkshixfv1#
这是不可能的。为什么?当您提交查询并解析查询时,配置单元变量会插入到查询中,因此在udf有机会运行之前。考虑使用类似oozie的工具,这样您就可以实际构建一个模块化的工作流。