当然希望有人可以通过自动添加基于驻留在HDFS目录中的逗号分隔文件的数据来帮助我创建外部HIVE分区表。我的理解或缺乏理解是,当您定义CREATE EXTERNAL TABLE,PARTITIONED并为其提供LOCATION时,它应递归扫描/读取每个子目录,并将数据加载到新创建的分区外部表中。以下内容应该为我的麻烦提供一些额外的见解...
Sample HDFS directory structure:<br>
/data/output/dt=2014-01-01<br>
/data/output/dt=2014-01-02<br>
/data/output/dt=2014-01-03 ...<br>
/data/output/dt=2014-05-21<br>
每个&#39; dt =&#39;子目录包含分隔文件。
以下是我的CREATE EXTERNAL TABLE语法示例:
CREATE EXTERNAL TABLE master_test (UID string,
lname string,
fname string,
addr string,
city string,
state string,
orderdate string,
shipdate string)
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/data/output/';
创建master_test外部表后,我原本认为我的所有分隔文件都已包含在CREATE中的表中。我将数据导入新定义的外部表的唯一方法是通过ALTER TABLE ADD PARTITION语句,例如:ALTER TABLE master_test ADD PARTITION(dt =&#39; 2014-04-16&#39;)。或者,如果我明确定义分隔文件的位置,它将添加定义表的单个文件。
非常感谢任何建议或指导。
答案 0 :(得分:9)
您可以使用MSCK REPAIR自动发现分区。 请查看文档:{{3}}