在配置单元

时间:2015-06-18 06:07:37

标签: hadoop hive partition

我创建了一个非分区表并将数据加载到表中,现在我想在部门的基础上将PARTITION添加到该表中,我可以这样做吗? 如果我这样做:

ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';

它给了我错误:

FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}

请帮忙。感谢

2 个答案:

答案 0 :(得分:9)

首先以这种方式创建一个表,以便表中没有分区列。

create external table Student(col1 string, col2 string) partitioned by (dept string) location 'ANY_RANDOM_LOCATION';

完成表的创建后,然后更改表以添加表 分区部门这样明智:

alter table Student add partition(dept ='cse') location '/test';

我希望这会有所帮助。

答案 1 :(得分:4)

如果在创建表时没有定义分区,则无法更改表分区。

如果在更改未分区的表以添加分区时,您会收到以下错误:“语义异常表未分区但存在分区规范:{dept = CSE},”这表示您尝试将分区包括在内桌子本身。

您没有收到语法错误,因为该命令的语法正确并用于更改分区列。

了解有关Hive Tables的更多信息:

  
    

https://www.dezyre.com//hadoop-tutorial/apache-hive-tutorial-tables

  

您还可以在表格中查看可能的更改:

  
    

https://sites.google.com/site/hadoopandhive/home/how-to-create-table-partition-in-hive

  

希望这有帮助。