我创建了一个非分区表并将数据加载到表中,现在我想在部门的基础上将PARTITION
添加到该表中,我可以这样做吗?
如果我这样做:
ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';
它给了我错误:
FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}
请帮忙。感谢
答案 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
希望这有帮助。