Hadoop 使用UDF的输出设置配置单元变量
我试图用UDF函数的输出设置一个配置单元变量,这样我就可以在.hql脚本后面的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_
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;