如何删除蜂巢列?

Posted

技术标签:

【中文标题】如何删除蜂巢列?【英文标题】:How to drop hive column? 【发布时间】:2016-11-01 12:23:16 【问题描述】:

我在 Hive 表中有两列 IdName,我想删除 Name 列。我使用了以下命令:

ALTER TABLE TableName REPLACE COLUMNS(id string);

结果是Name 列值被分配给Id 列。

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

【问题讨论】:

same Q你可以从这个问答中得到帮助 【参考方案1】:

除了问题的现有答案:Alter hive table add or drop column

根据 Hive documentation,

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

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

【讨论】:

【参考方案2】:

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

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

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

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

Create table tablename as select id from already_existing_table

如果这有帮助,请告诉我。

【讨论】:

以上是关于如何删除蜂巢列?的主要内容,如果未能解决你的问题,请参考以下文章

如何加入蜂巢[关闭]

在配置单元中一次性删除多个列

如何像蜂巢中的地图一样将两列合并为一列?

蜂巢酸更新和删除错误

如果分区列名称不正确,Hive 将删除所有分区

如何找到路径流并使用猪或蜂巢对它们进行排名?