我的表有超过2000列,但我只需要删除一列 有什么有效的方法可以在黑斑羚中做到这一点?
我正在尝试这种方式:
alter table proceso.prueba drop subsegm
select * from proceso.prueba
但是,我在“选择”中遇到了这个错误:
'hdfs://nameservice1/user/hive/warehouse/proceso.db/prueba/914a7dd4a8462ff1-
860a4c1d00000011_978927331_data.1.parq' has an incompatible Parquet schema
for column 'proceso.prueba.nfi_meses_antiguedad_bco'. Column type: INT,
Parquet schema: optional byte_array subsegm [i:4 d:1 r:0]
我在做什么错了?
感谢帮助
答案 0 :(得分:1)
当为表定义的架构(在这种情况下为列的数据类型)与表的相应Parquet文件中存在的架构发生冲突时,就会发生此错误。
要解决此问题,您可以检查以下内容
SHOW CREATE TABLE proceso.prueba
并列出各列。 parquet-tools meta hdfs://nameservice1/user/hive/warehouse/proceso.db/prueba/914a7dd4a8462ff1-
860a4c1d00000011_978927331_data.1.parq
以查看包含列详细信息的元数据。subsegm
的数据类型(在#2结果中)是否与应具有的数据类型等效(在#1结果中。)希望有帮助!