Hive的复杂数据类型和时间类型

一 复杂数据类型
Array:数组类型,由一系列相同类型的元素组成
Map:集合类型,包括key->value键值对,可以通过key来访问元素。
Struct:结构类型,可以包含不同类型的元素。这些元素可以通过“点语法”的方式来得到所需要的元素。

二 实战
1、数组
hive> create table student
> (sid int,
> sname string,
> grade array<float>);
类似:{1,Tom,[80,90,75]}
hive> desc student;
OK
sid int
sname string
grade array<float>
2、映射
hive> create table student1
> (sid int,
> sname string,
> grade map<string,float>);
OK
Time taken: 0.546 seconds
类似{1,Tom,<'大学语文',85>}
hive> desc student1;
OK
sid int
sname string
grade map<string,float>
Time taken: 0.377 seconds, Fetched: 3 row(s)
3、数组加映射
hive> create table student3
> (sid int,
> sname string,
> grade array<map<string,float>>);
OK
Time taken: 0.178 seconds
类似:{1,‘Tom’,[<'大学语文',80>,<‘大学英语’,90>]}
hive> desc student3;
OK
sid int
sname string
grade array<map<string,float>>
Time taken: 1.428 seconds, Fetched: 3 row(s)
4、结构
hive> create table student4
> (sid int,
> info struct<name:string,age:int,sex:string>);
OK
Time taken: 0.398 seconds
类似:{1,{‘Tom’,10,‘男’}}
hive> desc student4;
OK
sid int
info struct<name:string,age:int,sex:string>
Time taken: 0.682 seconds, Fetched: 2 row(s)
5、时间
hive> select unix_timestamp();
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_201708270801_0001, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201708270801_0001
Kill Command = /opt/hadoop-1.2.1/libexec/../bin/hadoop job -kill job_201708270801_0001
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2017-08-27 08:05:58,184 Stage-1 map = 0%, reduce = 0%
2017-08-27 08:06:21,155 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 6.28 sec
2017-08-27 08:06:30,451 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 6.28 sec
MapReduce Total cumulative CPU time: 6 seconds 280 msec
Ended Job = job_201708270801_0001
MapReduce Jobs Launched:
Job 0: Map: 1 Cumulative CPU: 6.28 sec HDFS Read: 270 HDFS Write: 11 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 280 msec
OK
1503792379
Time taken: 77.649 seconds, Fetched: 1 row(s)



Hive支持复杂数据类型,用于存储不同类型结构的数据。建表时使用这些复杂数据类型可以帮助组织管理数据。以下是一些主要的复杂数据类型: 1. **Struct(结构体)**: 它定义了一个带有序列字段的数据类型,每个字段有自己的名称类型。例如: ``` CREATE TABLE my_table (struct_field struct<field1: string, field2: int>); ``` 2. **Map(映射)**: 存储键值对的数据结构,键值可以是任意数据类型。例如: ``` CREATE TABLE my_map_table (map_field map<string, string>); ``` 3. **Array(数组)**: 存储同类型的元素序列。比如: ``` CREATE TABLE my_array_table (array_field array<int>); ``` 4. **Union类型(联合类型)**: 可以包含多个类型之一,如: ``` CREATE TABLE my_union_table (union_field uniontype(string, int)); ``` 5. **DecimalDouble(精确数字浮点数)**: 用于存储带有更高精度的数字,与标准的intdouble不同。 ``` CREATE TABLE my_decimal_table (decimal_field decimal(10,2), double_field double); ``` 6. **TimestampDate(日期时间)**: 专门用于存储日期时间信息。 ``` CREATE TABLE my_timestamp_table (timestamp_field timestamp, date_field date); ``` 7. **Binaryvarbinary(二进制可变长度二进制)**: 存储二进制数据。 ``` CREATE TABLE my_binary_table (binary_field binary, varbinary_field varbinary); ``` 使用这些数据类型时,要根据实际业务需求数据特性来选择设计表结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值