hive数据类型及其数据转换
由于需要使用hive sql进行数据查询,同时涉及多个不同类型的字段的组合,看Hive sql的文档相关和资料才知道,hive是支持大部分基础数据类型之间的相互转换的。
那么,hive本身支持哪些数据类型呢?
从hive内置数据类型中,Hive支持的数据类型包括以下这些:
| 数据类型 | 所占字节 | 开始支持版本 | |
| TINYINT | 1byte,-128 ~ 127 | 
 | |
| SMALLINT | 2byte,-32,768 ~ 32,767 | 
 | |
| INT | 4byte,-2,147,483,648 ~ 2,147,483,647 | 
 | |
| BIGINT | 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 
 | |
| BOOLEAN | 
 | 
 | |
| FLOAT | 4byte单精度 | 
 | |
| DOUBLE | 8byte双精度 | 
 | |
| STRING | 
 | 
 | |
| BINARY | 
 | 从Hive0.8.0开始支持 | |
| TIMESTAMP | 
 | 从Hive0.8.0开始支持 | |
| DECIMAL | 
 | 从Hive0.11.0开始支持 | |
| CHAR | 
 | 从Hive0.13.0开始支持 | |
| VARCHAR | 
 | 从Hive0.12.0开始支持 | |
| DATE | 
 | 从Hive0.12.0开始支持 | |
以及一些数据数据类型:包括array数组,map键值对,struct结构体,union联合等。
可以看到,hive对平时用到的数据类型都有所支持。
其中部分基础数据类型支持隐式转换,意味着在使用过程中可以直接把源类型作为目标类型来使用,支持数据类型隐式的类型包括:
| 
 | boolean | tinyint | smallint | int | bigint | float | double | decimal | string | varchar | timestamp | date | binary | 
| boolean | true | false | false | false | false | false | false | false | false | false | false | false | false | 
| tinyint | false | true | true | true | true | true | true | true | true | true | false | false | false | 
| smallint | false | false | true | true | true | true | true | true | true | true | false | false | false | 
| int | false | false | false | true | true | true | true | true | true | true | false | false | false | 
| bigint | false | false | false | false | true | true | true | true | true | true | false | false | false | 
| float | false | false | false | false | false | true | true | true | true | true | false | false | false | 
| double | false | false | false | false | false | false | true | true | true | true | false | false | false | 
| decimal | false | false | false | false | false | false | false | true | true | true | false | false | false | 
| string | false | false | false | false | false | false | true | true | true | true | false | false | false | 
| varchar | false | false | false | false | false | false | true | true | true | true | false | false | false | 
| timestamp | false | false | false | false | false | false | false | false | true | true | true | false | false | 
| date | false | false | false | false | false | false | false | false | true | true | false | true | false | 
| binary | false | false | false | false | false | false | false | false | false | false | false | false | true | 
如果hive不支持该类型的转换,在使用CAST进行转换时,就会报错:
如将bigint转换为binary
        CAST((9223372036854775807-unix_timestamp()) as binary)                                               
过往记忆总结的很好,上面的内容也多半出自此处,并进行了一定的加工汇总。
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号