1

我的查询出现错误,我不完全确定原因:

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 查询中使用动态生成的值?

(PS - 对于那些说我应该使用动态分区的人......我不想使用 Hive 规定的目录结构语法。)

4

2 回答 2

0

在 alter table 语句之前运行以下语句。

MSCK REPAIR TABLE revenue;

此语句会将有关分区的元数据添加到 Hive 目录。

于 2018-10-15T06:52:40.580 回答
0

当您对所有分区字段使用动态分区时,您需要确保您对动态分区模式使用非严格(hive.exec.dynamic.partition.mode)

在查询之前使用以下命令。

SET hive.exec.dynamic.partition.mode=nonstrict;

于 2016-03-10T20:08:45.857 回答