Hive 更改 VARCHAR 中的 table 列大小

Hive Alter table column size in VARCHAR

我是 Hive 的新手,几个月前我在下面创建了一个 table

create table TableName 
(
    EntityRelationship varchar(20), 
    EntityID varchar(50), 
    EntityName varchar(50), 

    CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)

但是,现在我意识到 EntityName Varchar(50) 还不够,还需要 Varchar(250)。我找到了 alter table 代码,但它们都没有改变列的大小,而是改变了类型和名称。

我也不能删除 table,因为它已经有很多数据,这意味着我必须每天重新加载过去几个月。

我想要的结局table如下所述

create table TableName 
( 
    EntityRelationship varchar(20), 
    EntityID varchar(50), 
    EntityName varchar(250), 
    CLUSTERED BY (EntityID) INTO 60 BUCKETS STORED AS ORC
)

我是否可以在不删除 table 的情况下将现有的 table 更改为 EntityName varchar(250)?珍惜你的时间。谢谢

改变 TABLE table_name 改变列 column_name 类型 varchar(250);

这可能有帮助

ALTER TABLE TableName CHANGE COLUMN EntityName EntityName  varchar(250);

阅读更多详情:Change Column Name/Type/Position/Comment

@YJG 如果您的 alter 语句不影响列大小,您可能没有其他机会,只能构建一个新的 table 您想要的格式,INSERT INTO newTable SELECT * FROM旧表。然后将oldTable重命名为backupTable,将newTable重命名为oldTable。当更改原始 table 模式不起作用时,有时需要这种通过暂存 table 移动数据的方法。