Hive修改与字段名后Spark读取不到字段

方案一:

前提是有元数据库的权限

问题重现(例)

当我将数据存储格式改变,或者增加一列的时候,我习惯使用了alter table add …来实现

原来的表:
在这里插入图片描述

ALTER TABLE test ADD COLUMNS (weight STRING) CASCADE
  • 1

加上一列weight字段后(这里使用cascade就是为了同步到hivemetastore),我用spark向表插入一个带有weight字段的表,此时抛出异常

Exception in thread "main" org.apache.spark.sql.AnalysisException:
 The column number of the existing table default.test(struct) 
 doesn't match the data schema(struct);
  • 1
  • 2
  • 3

告诉我字段不匹配,于是我去找了元数据发现元数据中的确没有weight这一字段,难道是cascade失效了?不太可能
差元数据的步骤:

use hivemetastore;
select * from TBLS;//找到此表的TBL_ID
//找到后在TABLE_PARA

你可能感兴趣的:(Spark,Hive)