当前的模式是:
hive> describe tableA;
OK
id int
ts timestamp
我想将ts
列更改为BIGINT
,但不想删除表格并重新创建。这可行吗?
找到解决方案:
ALTER TABLE tableA CHANGE ts ts BIGINT AFTER id;
完整细节请参见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn
ALTER TABLE tableA CHANGE a,b,c a,b,c BIGINT;
我尝试使用逗号分隔列,但它不起作用。我问这个问题的原因是我的表是使用Hue界面为hive创建的,并且“DECIMAL”默认为“(10,0)”,但我需要“(38,0)”。 - AM_HawkALTER TABLE table_name CHANGE col_name col_name newType
通常在Hive中修改现有表格很简单,只需使用以下语法。
ALTER TABLE table_name CHANGE old_col_name new_col_name new_data_type
在这里,您可以同时更改列名和数据类型。如果您不想更改列名,请确保旧列名和新列名相同。好的。
现在来解决您的问题。如果您想将ts列更改为BIGINT,则表示您正在更改列类型。因此,只需运行此查询即可。
ALTER TABLE tableA CHANGE ts ts BIGINT;
这里的ts和ts是一样的,意思是你不改变列名,而是改变列类型;如果你想同时改变列名,只需运行它即可。
ALTER TABLE tableA CHANGE ts new_col BIGINT;
现在运行
hive> 描述表A; OK id int new_col bigint