我正在尝试使用以下脚本将当前日期转换为Hive数据库(在HDInsight群集上运行的版本0.13)
SET curdt = from_unixtime(unix_timestamp());
DROP TABLE IF EXISTS curtime_test;
CREATE TABLE curtime_test (
dateEntered STRING
);
INSERT INTO TABLE curtime_test
SELECT '${hivevar:curdt}' FROM hivesampletable limit 3;
SELECT * FROM curtime_test;
请注意,我想为所有插入的记录设置相同的插入日期,这是一个玩具示例,但我想要使用它的真实插入记录有数百万条记录要插入。我上面尝试的这个版本只是将字符串'$ {hivevar:curdt}'插入到数据库中,这不是我想要的:
${hivevar:curdt}
${hivevar:curdt}
${hivevar:curdt}
由于字符串中的空格,省略引号会导致插入错误。我怎么能这样做?
更新 使用行
SELECT ${hiveconf:curdt} FROM hivesampletable limit 3;
根据Charlie Haley的评论(我混淆了$ {hivevar}和$ {hiveconf}),给了我想要的结果。如果他把它写成答案,我会把它标记为正确。
答案 0 :(得分:1)
以下代码示例适合我。这会解决您的问题吗?
DROP TABLE IF EXISTS curtime_test;
CREATE TABLE curtime_test (
dateEntered STRING
);
INSERT INTO TABLE curtime_test
SELECT unix_timestamp() FROM hivesampletable limit 1;
SELECT * FROM curtime_test;