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

Posted

技术标签:

【中文标题】Hadoop Hive:创建具有动态位置的外部表【英文标题】:Hadoop Hive: create external table with dynamic location 【发布时间】:2013-07-08 11:46:02 【问题描述】:

我正在尝试创建指向 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: Parse Error: line 3:9 mismatched input 'concat' expecting StringLiteral near 'LOCATION' in table location specification

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

【问题讨论】:

【参考方案1】:

好的,我找到了配置单元变量功能。 所以我在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';

【讨论】:

好。如果它按您需要的方式工作,您可以将其标记为已接受,以便其他人可以从中受益。谢谢。 hql 中变量名的单引号使其工作,谢谢!【参考方案2】:

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

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

【讨论】:

以上是关于Hadoop Hive:创建具有动态位置的外部表的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop Hive SQL:从格式奇怪的文件创建外部表

Hive 外部表架构重新连接

创建按一/多列分区的 BigQuery 外部表

Hive 外部表位置与加载路径

Hive分区参考

Hadoop生态之Hive