hive 复合类型_Hive基础之数据类型

1.数据类型

在创建表的时候我们在新建列的时候会需要指定数据类型,一般在数据文件中我们可以将所有的数据都指定为string即字符串类型,然后再用函数转换为其他的数据类型,比如日期、数值等。

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name

``[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]

....

data_type

: primitive_type

| array_type

| map_type

| struct_type

| union_type

由hive的语法规则可以看到hive的数据类型一共有五中,下面分别介绍一下这五种数据类型。

2.原生类型

primitive_type是对应的java中的数据类型,是比较常用的数据类型。这些数据类型的详细描述在链接中Hive Data Types,这里只介绍一下常用的数据类型:

INT/INTEGER (4-byte signed integer, from -2,147,483,648 to 2,147,483,647)

int或integer类型是整型,表示从-2,147,483,648到2,147,483,647的整数,一般用来表示ID。如果要表示的数值位数超过int类型的最大值,可以使用bigint。

DOUBLE (8-byte double precision floating point number)

如果用来表示商品的单价等金额信息可以使用double数据类型,double可以保存双精度数值。一般企业中我们会指定数值的位数和精度,这个时候我们就需要使用DECIMAL数据类型,该类型可以指定任意的精度和位数,方便用于计算。用法是 DECIMAL(precision, scale) ,其中precision是精度,指定有多少位有效数字,scale是小数位数,指小数点后有多少位数字,比如DECIMAL(10,2)指的就是有10位有效数字,小数点后是2位。

另外,hive中的日期类型不常用,我们一般将日期类型的数据保存为string类型,也省去了日期格式转换的麻烦。

字符串类型一般使用string类型,不推荐使用VARCHAR和CHAR类型。

对于boolean类型,我们一般用0和1来代替,后续的使用处理上也会方便一些。

3.复杂类型

复杂类型是指array_type、map_type、struct_type和union_type,一般在企业中使用 array_type和map_type会比较多一些。

4.Python对数据进行处理

一般企业中在对数据进行处理的时候是先将数据保存在hive表中:

create table test_log( content string );

在文件中一行数据就对应hive表中的一条数据,然后在创建子表的时候使用Python脚本对content进行数据处理。具体分为下面三个步骤:

1).Create table, Load data : E(xtract)

2).Select, Python : T(ransform)

3).Save data into sub table : L(oad)

这就是使用Hive对采集到的日志文件进行ETL的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值