在蜂巢中施放和改变的不同动作

时间:2017-08-01 02:16:59

标签: hive

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

  

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

我认为这意味着hive不支持将字符串转换为float,如table所示。但我发现我可以在同一列上进行投射并得到想要的结果。这让我很困惑为什么alter和cast之间会有不同的结果。它背后的逻辑是什么? THX。

1 个答案:

答案 0 :(得分: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