Hadoop 使用UDF的输出设置配置单元变量

Hadoop 使用UDF的输出设置配置单元变量,hadoop,hive,hiveql,udf,Hadoop,Hive,Hiveql,Udf,我试图用UDF函数的输出设置一个配置单元变量,这样我就可以在.hql脚本后面的INSERT-INTO-myTable中使用该值 这是myTable的DDL: CREATE TABLE myTable( CreationTimestamp TIMESTAMP, Tablename CHAR(50), LastExtractedTimestamp TIMESTAMP, OozieJobID CHAR(40) ); 以下操作不起作用: set hiveconf:ct=select current_

我试图用UDF函数的输出设置一个配置单元变量,这样我就可以在.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');
而且这个不起作用(没有引号):

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

零测试2015-12-11 11:25:03.341测试

因此,现在我正在使用以下解决方法:

INSERT INTO myTable select * from (select current_timestamp, 'test','2015-12-11 11:25:03.341','testID') as dummy;
你有什么建议或更好的方法来实现这一点吗


谢谢;-)

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

我不确定你是否可以在一个蜂箱查询之外使用一个UDF。也许你可以,但我从来没有遇到过。既然您正在运行
.hql
脚本,为什么不执行shell命令并执行它呢<代码>执行-请参阅一个基本示例。谢谢Bent,我现在可能会保留该解决方案,但我将尝试shell选项,看看执行需要多长时间
INSERT INTO myTable select * from (select current_timestamp, 'test','2015-12-11 11:25:03.341','testID') as dummy;