如何删除Hive列?

问题描述 投票:0回答:2

我在 Hive 表中有两列

Id
Name
,我想删除
Name
列。我使用了以下命令:

ALTER TABLE TableName REPLACE COLUMNS(id string);

结果是

Name
列值被分配给
Id
列。

如何删除表中的特定列,Hive 中是否有其他命令可以实现我的目标?

hadoop hive
2个回答
0
投票

除了问题的现有答案之外:更改配置单元表添加或删除列

根据 Hive 文档

REPLACE COLUMNS
删除所有现有列并添加新的列集。

REPLACE COLUMNS
也可用于删除列。例如,
ALTER TABLE test_change REPLACE COLUMNS (a int, b int);
将从
c
的架构中删除列
test_change


0
投票

您使用的查询是正确的。但这只会修改模式,即元存储。这不会修改数据方面的任何内容。

因此,在删除列之前,您应该确保您拥有正确的数据文件。

在您的情况下,数据文件不应包含名称值。

如果您不想修改文件,则创建另一个仅包含您需要的特定列的表。

Create table tablename as select id from already_existing_table

让我知道这是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.