Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

三十、Hive的数据类型以及常用的属性配置

上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~


目录

一、Hive的数据类型

1.1 基本数据类型

1.2 集合数据类型

1.2.1 介绍

1.2.2 示例

1.3 数据类型转换

二、常用的属性配置

2.1 HiveServer2服务

2.2 Hive的交互命令

2.3 Hive的其他命令

2.4 常用的属性配置

2.4.1 查询显示表头信息

2.4.2 显示当前数据库名称

2.4.3 配置Hive数据仓库位置

2.4.4 配置Hive运行日志信息存放位置

2.4.5 参数配置的优先级


 

一、Hive的数据类型

1.1 基本数据类型

Hive的基本数据类型有10种,如下所示:

Hive数据类型

对应的Java数据类型

长度

TINYINT

byte

1byte有符号整数

SMALINT

short

2byte有符号整数

INT

int

4byte有符号整数

BIGINT

long

8byte有符号整数

BOOLEAN

boolean

布尔类型,true或者false

FLOAT

float

单精度浮点数

DOUBLE

double

双精度浮点数

STRING

string

字符系列,可以指定字符集,可以使用单引号或者双引号。相当于数据库的varchar类型

TIMESTAMP

 

时间类型

BINARY

 

字节数组

1.2 集合数据类型

1.2.1 介绍

数据类型

描述

语法示例

STRUCT

通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{one STRING, two STRING},那么第1个元素可以通过字段.one来引用。

struct()

例如struct<person:string, city:string>

MAP

MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’one’->’xzw’和’two’->’yxy’,那么可以通过字段名[‘two’]获取最后一个元素

map()

例如map<string, int>

ARRAY

数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘one’, ‘two’],那么第2个元素可以通过数组名[1]进行引用。

Array()

例如array<string>

Hive有三种复杂数据类型STRUCT、ARRAY和MAP。STRUCT与C语言中的Struct类似,它封装了一个命名字段集合。ARRAY和MAP与Java中的Array和Map类似。复杂数据类型允许任意层次的嵌套。

1.2.2 示例

1、现有如下的数据

[{
    "name": "xzw",
    "loc": ["qd" , "zb"],
    "city": {
        "ta": 4,
        "qd": 3
    }
    "subject": {
        "dm": "Python" ,
        "reg": "bigdata" 
    }
},
{
    "name": "yxy",
    "loc": ["bj" , "sh"],
    "city": {
        "bj": 1,
        "sh": 3
    }
    "subject": {
        "dm": "Java" ,
        "reg": "AI" 
    }
}]

2、首先我们需要构造一下导入Hive中的数据文件,数据文件如下所示:

xzw,qd|zb,ta:4|qd:3,Python|bigdata
yxy,bj|sh,bj:1|sh:3,Java|AI

值得注意的是,MAP,STRUCT和ARRAY里的元素间关系都可以用同一个字符表示,这里用“|”。构造好的test.txt文件放到/root/files目录下。

3、创建Hive表

create table test(
name string,
loc array<string>,
city map<string, int>,
subject struct<dm:string, reg:string>
)
row format delimited fields terminated by ','
collection items terminated by '|'
map keys terminated by ':'
lines terminated by '\n';

4、加载数据到Hive表中

load data local inpath '/root/files/test.txt' into table test;

5、查询测试

1.3 数据类型转换

Hive的数据类型是可以进行隐式转换的,其规则如下:

(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。
(2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。
(3)TINYINT、SMALLINT、INT都可以转换为FLOAT。
(4)BOOLEAN类型不可以转换为任何其它的类型。
(5)可以使用CAST操作显示进行数据类型转换。例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

二、常用的属性配置

在讲解常用的属性配置之前,我们先来看一下怎样访问或者是连接Hive以及Hive常用的一些交互命令等,这对后续属性配置的讲解有一个打基础的作用。

2.1 HiveServer2服务

HiveServer2(HS2)是服务器接口,使远程客户端执行对Hive的查询和检索结果。换句话说,可以使用JDBC通过HiveServer2服务对Hive进行访问。以下便是如何开启HiveServer2服务。

1、首先通过以下命令启动HiveServer2服务:

hiveserver2

2、启动beeline

beeline

3、连接HiveServer2服务

通过以下命令连接HiveServer2服务:

!connect jdbc:hive2://master:10000

2.2 Hive的交互命令

可以通过如下命令,查看Hive都有哪些交互命令:

hive -help

常用的交互命令可以参考我的另外一篇博客:

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 边缘计算卸载算法--LOPRTC

下一篇: 总结与短期规划

精华推荐