我得到了一个超过2000列的表,但我只需要删除一列有没有任何有效的方法,使它在 Impala ?
我试着这样做:
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]
我做错什么了?
谢谢你的帮助
1条答案
按热度按时间4nkexdtk1#
当为表定义的架构(本例中为列的数据类型)与表的相应Parquet文件中存在的架构冲突时,会发生此错误。
要解决这个问题,你可以检查下面的,
执行
SHOW CREATE TABLE proceso.prueba
并列出列。运行命令
parquet-tools meta hdfs://nameservice1/user/hive/warehouse/proceso.db/prueba/914a7dd4a8462ff1- 860a4c1d00000011_978927331_data.1.parq
查看包含列详细信息的元数据。比较#1、#2的结果,查看列数是否正确,以及列的数据类型是否正确
subsegm
(in#2 result)等价于它应该具有的(in#1 result)。将表数据类型修改为正确的值、结构(如果需要)将有助于解决此问题。
希望有帮助!