Hadoop Hive:创建具有动态位置的外部表

时间:2013-07-08 11:46:02

标签: hive

我正在尝试创建一个指向S3输出文件的Hive外部表 文件名应反映当前日期(它始终是一个新文件)。

我试过了:

CREATE EXTERNAL TABLE s3_export (...)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION concat('s3://BlobStore/Exports/Daily_', from_unixtime(unix_STRING(),'yyyy-MM-dd'));

但是我收到了一个错误:
FAILED:解析错误:第3行:第9行不匹配输入'concat'期望表位置规范中'LOCATION'附近的StringLiteral

有没有办法动态指定表位置?

2 个答案:

答案 0 :(得分:7)

好的,我找到了hive变量功能。 所以我按照以下方式传递cli中的位置

hive -d s3file=s3://BlobStore/Exports/APKsCollection_test/`date +%F`/

然后在hive命令中使用该变量

CREATE EXTERNAL TABLE s3_export (...)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '${s3File}';

答案 1 :(得分:-1)

此功能在我身边不起作用, 你是怎么做到的?

hive -d s3file=s3://BlobStore/Exports/APKsCollection_test/`date +%F`/