1

目前,我尝试在 hive 中合并几个表。实现这一点后,我发现某些列类型不正确。我认为有些应该是float,但它变成了某种类型string。然后我运行了 alter 命令:alter table table_name change column_name column_name float;它返回了错误信息:

失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。无法更改表。以下列的类型与各自位置的现有列不兼容

我认为这意味着 hive 不支持将字符串转换为浮动,如表所示。但我发现我可以在同一列上进行投射并获得想要的结果。这让我很困惑为什么改变和演员之间会有不同的结果。这背后的逻辑是什么。谢谢。

4

1 回答 1

1

看来您错过了 CHANGE 关键字。

alter table table_name CHANGE column_name column_name_new float;

见这里:https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

演示:

hive> create table t(a string);
OK
Time taken: 0.069 seconds
hive> alter table t change a a_new float;
OK
Time taken: 0.158 seconds
hive> describe formatted t;
OK
# col_name              data_type               comment

a_new                   float
于 2017-08-01T06:36:52.733 回答