具有参数化LOCATION的Hive CREATE EXTERNAL TABLE

时间:2013-03-13 10:13:12

标签: hadoop hive hiveql

这可以按预期工作:

 DROP TABLE mytable; 
 CREATE EXTERNAL TABLE mytable (
     Dim1 STRING,
     Dim2 STRING,
     Dim3 STRING ) 
 LOCATION 'hdfs:///user/myuser/data';

但这不是:

 set rootpath = 'hdfs:///user/myuser/data'; 
 DROP TABLE mytable; 
 CREATE EXTERNAL TABLE mytable (
     Dim1 STRING,
     Dim2 STRING,
     Dim3 STRING ) 
 LOCATION '${hiveconf:rootpath}';

失败并出现以下错误(Hive 0.9.0):

  

失败:解析错误:第9:11行输入'hdfs'不匹配期待''''附近的EOF

我做错了什么,或者这是一个已知的问题/限制?有没有关于变通方法的建议?

2 个答案:

答案 0 :(得分:2)

我认为它应该是LOCATION ${hiveconf:rootpath}

答案 1 :(得分:0)

您还可以使用我们经常在create table DDL中使用的环境变量。它可以称为$ {env:variable_name}