hive修改字段及字段类型

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;
这种修改的做法不建议用,只是逻辑上修改了字段,物理上并没有变化,对特定情况下的表有一定影响

你可能感兴趣的:(hive,大数据,大数据开发)