如何从Impala中的表中删除列

时间:2019-07-19 21:59:48

标签: impala hue

我的表有超过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]

我在做什么错了?

感谢帮助

1 个答案:

答案 0 :(得分:1)

当为表定义的架构(在这种情况下为列的数据类型)与表的相应Parquet文件中存在的架构发生冲突时,就会发生此错误。

要解决此问题,您可以检查以下内容

  1. 执行SHOW CREATE TABLE proceso.prueba并列出各列。
  2. 运行命令parquet-tools meta hdfs://nameservice1/user/hive/warehouse/proceso.db/prueba/914a7dd4a8462ff1- 860a4c1d00000011_978927331_data.1.parq以查看包含列详细信息的元数据。
  3. 比较#1,#2的结果,以查看列数是否正确,并查看列subsegm的数据类型(在#2结果中)是否与应具有的数据类型等效(在#1结果中。)
  4. 将表数据类型修改为正确的值,结构(如果需要)可以帮助您解决此问题。

希望有帮助!