如何删除 Impala 表中的列

dgtucam1  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(497)

我得到了一个超过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]

我做错什么了?
谢谢你的帮助

4nkexdtk

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)。
将表数据类型修改为正确的值、结构(如果需要)将有助于解决此问题。
希望有帮助!

相关问题