Hive是一个建立在 Hadoop 之上的数据仓库工具。 Hive充当 Hadoop 生态系统的接口。它是一个框架,用于使用 HDFS(Hadoop 分布式文件系统)存储数据并使用 Map Reduce 处理数据。因此,Hadoop 中存在的数据由 hive 获取并执行分析活动。在此,我们将借助示例详细讨论 hive 原始数据类型,以便更好地理解。此外,我们将介绍对 hive 数据类型的需求,然后重点介绍原始数据类型,例如数字数据类型、日期时间数据类型、复杂数据类型等。让我们一一讨论。
需要Hive数据类型:
执行分析活动需要一些数据类型和数据格式来处理和检索数据。
- 通过使用Hive,我们可以进行数据分析。
- Hive提供类似于 SQL 的 HQL(Hive查询语言)。
- 我们可以通过定义具有数据类型的表列来创建Hive表。
数据类型分类:
Hive数据类型可以分为两部分。
原始数据类型:
原始数据类型也分为以下 3 种类型。
类型 1 :
数字数据类型 –
这些数据类型用于定义具有整数变量的列。
Data type | Size |
---|---|
TINYINT – 1 byte signed integer | -128 to 127 |
SMALLINT – ‘2 byte signed integer | -32, 768 to 32, 767 |
INT – 4 byte signed integer | –2,147,483,648 to 2,147,483,647 |
BIGINT – 8 byte signed integer’ | 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
FLOAT – ‘Single precision floating point | Single Precision |
DOUBLE – Double precision floating point | Double Precision |
DECIMAL – Precise decimal type based on Java BigDecimal Object | Big Decimal |
示例查询 –
TINYINT 演示:
在这个 hive 数据类型中,范围是从 -128 到 127。让我们通过一个例子来理解。
create table geeksportal.geekdata(college_id tinyint);
SMALLINT 演示:
在这个 hive 数据类型中,大小为 2 个字节,范围为 -32768 到 32767。让我们通过一个例子来理解。
create table geeksportal.geekdata(college_id smallint);
INT演示:
在此 hive 数据类型中,大小为 4 字节,范围为 –2,147,483,648 到 2,147,483,647。让我们通过一个例子来理解。
create table geeksportal.geekdata(college_id int);
BIGINT 演示:
在此 hive 数据类型中,大小为 8 字节,范围为 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。让我们通过一个例子来理解。
create table geeksportal.geekdata(phonenumber bigint);
浮动演示:
在此 hive 数据类型中,大小是单精度浮点数,范围是单精度。让我们通过一个例子来理解。
create table geeksportal.geekdata(percentage float);
双演示:
在此 hive 数据类型中,大小为双精度浮点数,范围为双精度。让我们通过一个例子来理解。
create table geeksportal.geekdata( percentage double );
十进制演示:
在这个 hive 数据类型中,size 是基于Java BigDecimal Object 的 Precise decimal 类型,range 是 Big Decimal。让我们通过一个例子来理解。
create table geeksportal.geekdata( percentage decimal);
类型 2 :
日期/时间数据类型 –
在这里,我们将讨论Hive的日期/时间数据类型,如下所示。
TIMESTAMP - 'YYYY-MM-DD HH:MM:SS.fffffffff = 9 decimal place precision
时间戳演示:
在这个hive数据类型中,你会看到TIMESTAMP数据类型的演示如下。
create table geeksportal.geekdata( time timestamp);
字符串数据类型:
在此配置单元的数据类型,你会明白有如下的例子的帮助字符数据类型的数据类型。
create table geeksportal.geekdata( name string);
类型 3 :
复杂的数据类型——
在这里,我们将讨论Hive的复杂数据类型如下。
大批 :
数组是由整数索引的所有相同数据类型的字段的集合。
句法 :
ARRAY
地图 :
映射是键值对的集合,其中键是原始类型,值可以是任何东西。为键和值选择的数据类型必须在每个映射中保持相同。
句法 :
MAP
结构:
它是一个嵌套的复杂数据结构。
句法 :
STRUCT
联合:
它是一种复杂数据类型,可以一次保存其可能的数据类型之一。
句法 :
UNIONTYPE
例子 :
借助示例演示数据类型,以便更好地理解。考虑一个包含主题和标记记录的文本文件 (Geek.txt),如下所示。
7058,cse^1,1|2|3,A|50000,3,true
7059,cse^2,1|2,B|40000,good,true
代码/查询:
Creating a table t1:
create table t1(id int,class map,sections array,hostel
struct,rating uniontype,exist boolean)
row format delimited
fields terminated by ','
collection items terminated by '|'
map keys terminated by '^'
lines terminated by '\n'
stored as textfile;