平常创建表的时候,都是 字段名 string 或者 字段名 int
今天将字段名设置为char时,报了这个错误ParseException line 6:26 mismatched input ‘,’ expecting ( near ‘char’ in primitive type specification,想了好一会才想起来,char类型的后面需要跟上括号,括号里面是字段值占用的字节量上限
create table data_order(
orderid string,
orderCustomerType char(20),
)row format delimited fields terminated by '$$';
像这样,将 char 改为 char(20),否则报错
开了这篇博客,光写这个错误有点少,顺便收集一下hive的数据类型的相关博客
- varchar与char的区别
摘自 hive—基本类型中,varchar(20)与char(20)的区别
Hive中varchar与char都是用来存储字符串。
两者区别是:
varchar属于可变长的字符类型。
char属于固定长度的字符类型。
假定声明了varchar(20)与char(20)两种数据类型,当存入的字符占用小于20时,声明为varchar的字符只占用足够表示它的那些字符空间;而char则仍然占满20个字节空间,用空格填充。
- 数据类型 hive