我在 Hive 表中有两列
Id
和 Name
,我想删除 Name
列。我使用了以下命令:
ALTER TABLE TableName REPLACE COLUMNS(id string);
结果是
Name
列值被分配给 Id
列。
如何删除表中的特定列,Hive 中是否有其他命令可以实现我的目标?
除了问题的现有答案之外:更改配置单元表添加或删除列
根据 Hive 文档,
删除所有现有列并添加新的列集。REPLACE COLUMNS
也可用于删除列。例如,REPLACE COLUMNS
将从ALTER TABLE test_change REPLACE COLUMNS (a int, b int);
的架构中删除列c
。test_change
您使用的查询是正确的。但这只会修改模式,即元存储。这不会修改数据方面的任何内容。
因此,在删除列之前,您应该确保您拥有正确的数据文件。
在您的情况下,数据文件不应包含名称值。
如果您不想修改文件,则创建另一个仅包含您需要的特定列的表。
Create table tablename as select id from already_existing_table
让我知道这是否有帮助。