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:创建具有动态位置的外部表的主要内容,如果未能解决你的问题,请参考以下文章