1) 从 0.13 版开始的 Hive 内置了 parquet 模式进化。
https://issues.apache.org/jira/browse/HIVE-6456
https://github.com/Parquet/parquet-mr/pull/297
附言。请注意,对模式演变的开箱即用支持可能会影响性能。例如,Spark 有一个旋钮可以打开和关闭 parquet 模式演变。在最近的 Spark 版本之一之后,由于性能下降,它现在默认关闭(尤其是当有很多 parquet 文件时)。不确定 Hive 0.13+ 是否也有这样的设置。
2) 还想建议尝试在 Hive 中在您期望经常更改架构的此类镶木地板表之上创建视图,并在任何地方使用视图但不直接使用表。
例如,如果您有两个表 - A 和 B 具有兼容的模式,但表 B 有另外两列,您可以通过以下方式解决此问题
CREATE VIEW view_1 AS
SELECT col1,col2,col3,null as col4,null as col5 FROM tableA
UNION ALL
SELECT col1,col2,col3,col4,col5 FROM tableB
;
因此,您实际上不必像@miljanm 建议的那样重新创建任何表,您只需重新创建视图即可。它将有助于您的项目的敏捷性。