大家好,又见面了,我是你们的朋友全栈君。
hive修改字段类型语句:alter table 表名 change column 原字段名 新字段名 字段类型; alter table user_chain change column u_register u_registe date;(u_register原类型为string类型) 这样修改会报一个错误: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. The following columns have types incompatible with the existing columns in their respective positions : u_registe 原因分析:hive内部的类型转换的限制。总结为: 1、我们能够修改整型字段为double类型字段,因为double类型能够承载整型数据, 但是我们修改double类型字段为整型字段会有问题,因为整型字段不能够满足double数据 2、任何类型基本都可以转为字符串,任何double、float、int类型的数据都可以作为字符串处理 3、数据类型的转换为转换后的数据不会截断原来的数据
如果只想改变列的类型而不关心数据的准确性,可以设置set hive.metastore.disallow.incompatible.col.type.changes=false;
新增字段表
alter table 表名 add columns(字段名 数据类型)
修改表的字段顺序 ALTER TABLE t1 CHANGE column student student varchar(20) comment ‘学生姓名’ AFTER class; 这种修改的做法不建议用,只是逻辑上修改了字段,物理上并没有变化,对特定情况下的表有一定影响
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。