hive在新加列(add columns)后,再load数据时,理论上来说新增的列如果有数据的话会展示出来;
但是add和load后没有展示出对应的数据,hdfs的文件里是有对应的数据的,desc表结构时也有对应的字段;
但是在查看元数据时,发现表的元数据没有发生变化,没有新增加进这一列,具体原因还未知;
最终也没有找到具体的原因,个人觉得是元数据库的同步问题,类似于oracle的脏读,没有实时提交;
解决办法:
方法一:重建分区
方法二:手动更新元数据
—-在元数据库里执行如下语句
1、select CD_ID from SDS where LOCATION=’hdfs://ods.db/tablename’; ——-查找表对应的CD_ID
2、SELECT * FROM SDS WHERE LOCATION LIKE ‘hdfs://bidc/ods.db/tablname/pt=%’; –查找表总共有哪些分区
3、UPDATE SDS SET CD_ID=(查询1中的CD_ID的值) WHERE LOCATION LIKE ‘hdfs://bidc/ods.db/tablename/pt=%’; —-更新全部分区,如果要指定更新的分区,把%改为确切的分区值即可
方法三:等它自己更新,目前发现的跨天后是可以正常的
方法二是亲测是可以的;
转载自:
http://blog.sina.com.cn/s/blog_b82e70870102vuvf.html
切实解决了我的问题。