我的查询出错,我不确定原因:
ALTER TABLE revenue ADD PARTITION (ds=from_unixtime(unix_timestamp(), 'yyyy-MM-dd')) LOCATION CONCAT('s3://userenroll-analytics/prod/revenue/avro/', from_unixtime(unix_timestamp(), 'yyyy/MM/dd'))
错误:
Error while compiling statement: FAILED: ParseException line 1:38 cannot recognize input near 'from_unixtime' '(' 'unix_timestamp' in constant
有没有办法在Hive ALTER TABLE查询中使用动态生成的值?
(P.S。 - 对于那些说我应该使用动态分区的人......我不想使用Hive规定的目录结构语法。)
答案 0 :(得分:0)
当您对所有分区字段使用动态分区时,您需要确保为动态分区模式使用nonstrict(hive.exec.dynamic.partition.mode)
在查询之前使用以下命令。
SET hive.exec.dynamic.partition.mode = nonstrict;
答案 1 :(得分:0)
在更改表声明之前运行以下语句。
MSCK REPAIR TABLE revenue;
此语句会将有关分区的元数据添加到Hive目录中。