我在Hive表中有两列Id
和Name
,我想要删除Name
列。我使用了以下命令:
ALTER TABLE TableName REPLACE COLUMNS(id string);
结果是Name
列值已分配到Id
列。
如何删除表格的特定列,Hive中是否还有其他命令可以实现我的目标?
答案 0 :(得分:0)
除了问题的现有答案: Alter hive table add or drop column
根据Hive documentation,
REPLACE COLUMNS
删除所有现有列并添加新的列集。
REPLACE COLUMNS
也可用于删除列。例如,ALTER TABLE test_change REPLACE COLUMNS (a int, b int);
会从c
的架构中删除列test_change
。
答案 1 :(得分:0)
您正在使用的查询是正确的。但这只会修改模式,即Metastore。这不会修改数据方面的任何内容。
因此,在删除列之前,应确保您具有正确的数据文件。
在您的情况下,数据文件不应包含名称值。
如果您不想修改该文件,请创建另一个只包含您需要的特定列的表。
Create table tablename as select id from already_existing_table
请告诉我这是否有帮助。