在 Hive 插入中嵌入当前日期
Embedding Current Date in Hive Insert
我正在尝试使用以下脚本将当前日期输入 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}),给出了我想要的结果。如果他把它写下来作为答案我会标记为正确。
以下代码示例适用于我。这是否解决了您的问题?
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;
我正在尝试使用以下脚本将当前日期输入 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}),给出了我想要的结果。如果他把它写下来作为答案我会标记为正确。
以下代码示例适用于我。这是否解决了您的问题?
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;