作者:幽鸿 Aug 8, 2015 9:55:30 PM
Hive只是传统关系数据库和现在流行的分布式数据库的衍生物,所以在很多方面还不是很成熟。Hive修改字段的时候就会有许多问题产生,比如历史分区的数据会为null。
那么如何解决这一问题呢?最简单、暴力的方法就是drop表,然后重建。但是很多时候,我们是不允许这样的。那么问题来了,我们可以先修改表字段,alter tableName add columns(columnName1 columnType1,columnName2 columnType2……);
然后一次性修改历史分区:alter tableName partition(ds) add columns(columnName1 columnType1,columnName2 columnType2……);当然,我们必须确保这两天命令先后执行,否则某些分区中存在已添加字段,那么第二条语句就会报错。